2

AJAXを使用したPOSTリクエストに少し問題があります。データがデータベースに保存されていないようです。POSTの代わりにGETを使用すると機能しましたが、問題は、ページ上のキャンバスからのimagedataであるため、大量のデータを送信することです。送信するデータのサイズを印刷して、送信する前に実際に正しいことを確認しようとしました(長さは約10500文字でした)。

Javascript/AJAXコードは次のとおりです。

if(type == "DrawingData" && Drawer)
{
    var CanvasData = canvas.toDataURL("image/png"); 
    var url = "DB_Com.php";
    var params = "DrawingData="+CanvasData;

    xmlhttp.open("POST", url, true);

    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");

    xmlhttp.send(params);
}

そしてここにPHPコードがあります:

if(isset($_POST['DrawingData']))
{
    $Image = mysql_real_escape_string($_POST['DrawingData']);

    $query = "UPDATE BlackboardDrawing SET Data = '$Image'";
    mysql_query($query) or die(mysql_error());
}

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

Ajax は正常に見えますが、更新する行 ID を POST する必要があります。:

if(type == "DrawingData" && Drawer)
{
    var CanvasData = canvas.toDataURL("image/png"); 
    var url = "DB_Com.php";
    var rowid = 'your_row_id';
    var params = "DrawingData="+CanvasData+"rowid="+rowid;

    xmlhttp.open("POST", url, true);

    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", params.length);
    xmlhttp.setRequestHeader("Connection", "close");

    xmlhttp.send(params);
}

PHP スクリプトを変更します。

if(isset($_POST['DrawingData']))
{
    $Image = mysql_real_escape_string($_POST['DrawingData']);
    $rowid = (int)$_POST['rowid'];
    $query = "UPDATE BlackboardDrawing SET Data = '$Image' WHERE id='$rowid'";
    mysql_query($query) or die(mysql_error());
}
于 2012-05-11T19:54:14.707 に答える