0

私は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へのリダイレクトはありません

4

2 に答える 2

-1

POST リクエストでクエリ文字列を指定することはできません。これを以下のコードに変更する必要があります

            ajax.open("POST",'upload_screenshot.php',true);
            ajax.setRequestHeader('Content-Type', 'application/upload');
            ajax.send("newname='<?php echo $newname;?>'");
于 2013-08-09T12:42:57.737 に答える