通过AJAX使用GET发送大量文本


Sending lot's of text using GET via AJAX

我得到了一个使用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