我得到了一个使用ajax发送大量数据的简单表单。我正在创建一个小型CMS,您可以在其中创建博客文章。
blog的javascript是这样的:
function SaveBlog()
{
document.getElementById("txtHint").innerHTML= 'Saving...';
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
var TitleVar = document.getElementById('title').value;
var editorText = CKEDITOR.instances.blogcontent.getData();
xmlhttp.open("GET","saveblog.php?id="+<?php echo $_GET['update']; ?> + "&title=" + TitleVar + "&context=" + encodeURIComponent(editorText),true);
xmlhttp.send();
}
是
后面的PHP脚本$ID = $_GET['id'];
$con = mysql_connect("", "", "");
mysql_select_db("FP", $con);
$Title = $_GET['title'];
$Context = mysql_real_escape_string($_GET['context']);
mysql_query("UPDATE Blog SET BlogTitle='$Title', Entry='$Context' WHERE Identifier='$ID'");
//echo "ID: " . $_GET['id'] . " Title: " . $_GET['title'] . " Context: " . $_GET['context'];
echo '<b>Last Save: </b>' . date("F j, Y, g:i:s a");
一切正常,当我只发送大约2000个字符时,它只显示"Saving…",没有其他内容
您正在使用GET请求,这意味着您可能会在您的web服务器上遇到某种URI长度限制。(参见:414 Request-URI Too Large)
你应该使用POST代替,你的GET变量'title'容易受到SQL注入,你应该以同样的方式转义它与你的变量'context'
对于发送大量有效负载的数据,您应该使用POST请求-而不是GET请求。改成post request