2012-05-10 132 views
2

我对使用AJAX的POST请求有点问题。数据似乎并不存储在数据库中。当我使用GET而不是POST时它工作,但问题是它发送大量数据,因为它是来自页面上画布的图像数据。我试图打印出发送的数据的大小,以确保它在发送之前确实是正确的(它大约有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看起来不错,但您需要POST您正在更新的行ID。 :

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