2012-05-10 21 views
2

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

は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()); 
} 

すべてのヘルプは高く評価されています。 ありがとう!

+0

"データの膨大な量" の問題点は何ですか?あなたが "GET制限"のために落ちたと言わないでください... – Shikiryu

+1

実際には私はそれがPHP POSTの制限だと思います。 http://www.php.net/manual/en/ini.core.php#ini.post-max-size。 Firebug for FirefoxでAjaxリクエストが返すものを確認してください。 – talereader

+0

@Shikiryu GETの制限エラーが発生しましたか?とにかくそれをオーバーライドするか、サイズを変更するには? – Araw

答えて

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()); 
} 
関連する問題