保存ボタン付きキャンバス描画ツールがあります。保存ボタンをクリックすると、このコードが実行されます。AJAX、PHP、キャンバスURI
function saveDrawing() {
var url = canvas.toDataURL();
w = window.open('saveimage.php');
w.onload = function(){
var placeholder = w.document.getElementById("placeholder");
placeholder.src = url;
};
}
画像はプレースホルダ要素の新しいウィンドウに表示されます。このページからは、イメージを.png形式でダウンロードする2つのボタンと、フォームデータとともに電子メールでpngを送信するボタンを追加したいと思います。私は、PHPは、サーバー側のものを処理するために使用する必要があります理解しています。私はウェブを見て、これを思いついた。
saveimage.phpにおけるAJAX要求:
function saveViaAJAX(){
var placeholder = document.getElementById("placeholder");
var canvasData = placeholder.src;
var postData = "canvasData="+canvasData;
var ajax = new XMLHttpRequest();
ajax.open("POST",'save.php',true);
ajax.setRequestHeader('Content-Type', 'canvas/upload');
ajax.send(postData);
}
とsave.php:
は<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen('drawing.png', 'wb');
fwrite($fp, $unencodedData);
fclose($fp);
}
?>
saveimage.phpで保存ボタンは次のようになります。
<button onclick="saveViaAJAX();" class="button">
ボタンをクリックすると何も得られません。これはこれに最も近いアプローチですか?または私はdataToURL()から行く必要がありますか?まっすぐにデコードされ、格納されるphpになると私のプレースホルダーの要素にPHP変数を含める?私はそれを行うためにセッションが必要でしょうか?これは少し失われました。サーバー側は私の強みではありません。前もって感謝します!
jQueryコードはGETを使用していますが、PHPコードは '$ GLOBALS ['HTTP_RAW_POST_DATA']'を探しています。それはあなたがGETを使用するとき、人口を得ますか? –
私はポストして取得しようとしました。コンソールは両方に対して同じことを言います。 – cl0udc0ntr0l
私はサーバーからの応答を得ていないようです。 (ajax.readyState == 4){ アラート(ajax.responseText); } } アラートがポップアップしません。 – cl0udc0ntr0l