1

我得到了一个使用 ajax 发送大量数据的简单表单。我正在创建一个小型 CMS,您可以在其中创建博客文章。

博客 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 个字符时,它只是说“正在保存......”而没有别的。

4

2 回答 2

3

要发送大量数据有效负载,您应该使用 POST 请求 - 而不是 GET 请求。将其更改为发布请求

于 2013-04-27T21:04:29.270 回答
3

您正在使用 GET 请求,这意味着您的网络服务器中的 URI 长度可能会遇到某种限制。(请参阅:414 请求 URI 太大)

您应该改用 POST,您的 GET 变量 'title' 也容易受到 SQL 注入的影响,您应该以与变量 'context' 相同的方式对其进行转义

于 2013-04-27T21:09:07.493 回答