2013-08-09 10 views
0

kineticjs 라이브러리를 사용하고 있는데 toDataURL 메서드를 사용하여 스테이지를 이미지로 저장하고 XMLHttpReuest으로 서버에 업로드하는 스크립트가 있습니다. 모든 작품은 이미지를 서버에 저장하는 데 예상대로 완료되었지만 리디렉션 또는 변경 페이지를 가져올 수 없습니다.한 번만 리디렉션 XMLHttpRequest Complete Error

이미지를 생성하는 내 자바 스크립트/kineticjs 코드는 다음과 같습니다

function save() { 
    stage.toDataURL({ 
     callback: function(dataUrl) { 
      var ajax = new XMLHttpRequest(); 
      ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',false); 
      ajax.setRequestHeader('Content-Type', 'application/upload'); 
      ajax.send(dataUrl); 
     } 
    }); 
} 

upload_screenshot.php에 대한 나의 코드는 다음과 같습니다

<?php 
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){ 

    $imageData=$GLOBALS['HTTP_RAW_POST_DATA']; 
    $newname = $_GET['newname']; 
    $imagefile = 'final_images/'.$newname.'.png'; 

    $filteredData=substr($imageData, strpos($imageData, ",")+1); 
    $unencodedData=base64_decode($filteredData); 

    $fp = fopen($imagefile, 'wb'); 
    fwrite($fp, $unencodedData); 
    fclose($fp); 

    header('Location: http://www.example.com'); 
} 
?> 

그래서 이미지가 서버에 저장됩니다하지만 난 다음 얻을 Chrome 자바 스크립트 콘솔의 오류 :

Uncaught Error: NetworkError: DOM Exception 19 

이게 무슨 의미입니까?

내가 거짓 (동기)에서 공모 변경하는 경우 :

ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',false); 

사실 (비동기)로 : 지금 파일이 다시 오류가 있지만없이 서버에 저장된 얻을

ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',true); 

을 example.com에 리디렉션 없음

답변

0

PHP 스크립트의 header() 호출이 아약스 요청을 통해 페이지를 리디렉션하지 않습니다. ajax 요청의 응답을 검토하고 document.location = "http://example.com"을 사용하여 javascript에서 리디렉션을 수행해야합니다.

여기에 ajax 응답에서 콜백 함수를 수행하는 방법에 대한 example이 있습니다.

또한이 자바 스크립트를 실행하는 방법이나 위치가 확실하지 않지만 외부 js 파일에있는 경우 <?php echo $newname; ?>이 실행되지 않습니다. 이 정보를 자바 스크립트 함수에 전달하는 더 영리한 방법을 찾아야합니다.

+0

완벽! 덕분에 :) 부하를 도왔습니다. PHP는 그냥 일시적이지만 조언을 주셔서 감사합니다 –

-1

POST에서 검색어 문자열을 지정할 수 없습니다. 다음 코드로 변경해야합니다. 요청 :

  ajax.open("POST",'upload_screenshot.php',true); 
      ajax.setRequestHeader('Content-Type', 'application/upload'); 
      ajax.send("newname='<?php echo $newname;?>'"); 
+0

POST 요청에 URI의 매개 변수를 포함 할 수없는 이유는 없습니다. –