私はkineticjsライブラリを使用しており、toDataURL
メソッドを使用してステージを画像として保存し、それをサーバーにアップロードするスクリプトを持っていますXMLHttpReuest
. 画像をサーバーに保存する際にすべてが期待どおりに機能しますが、完了するとページをリダイレクトまたは変更できません。
画像を生成するための私のjavascript/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 javascript コンソールで次のエラーが表示されます。
Uncaught Error: NetworkError: DOM Exception 19
これは何を意味するのでしょうか?
open 呼び出しを false (同期) から変更した場合:
ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',false);
true (非同期):
ajax.open("POST",'upload_screenshot.php?newname=<?php echo $newname;?>',true);
エラーなしでサーバーに保存されたファイルを取得しましたが、example.comへのリダイレクトはありません