0

以下代码获取 html,编码并将其发送到任何 php 文件。php 文件只包含“hello”字符串。但是当函数运行时,它可以获得所有 html,但不能发送字符串长的原因。因为您看不到 HELLO 警报。Ajax允许定义最长?我对吗?

function getlongdata(){
    htmldatas=encodeURIComponent($('#divlongcontent').html());
    alert(htmldatas);
    $.ajax({
         type: "GET",
         url: "sayhello.php",
         data: "longdatago="+htmldatas,
         success: function(msg){
            alert(msg);
         }
     });
}


<div id="divlongcontent">blablabla1000000000timesblaaaaaaa</div>
4

3 回答 3

4

浏览器对URL 长度施加了限制

如果您要提交大量数据,请使用 POST 请求并将其放入消息正文而不是查询字符串中。

于 2012-11-15T16:36:41.187 回答
0

根据维基百科,使用POST而不是:GET

有时 HTTP GET 甚至不适合数据检索。例如,需要在 URL 中指定大量数据时。浏览器和 Web 服务器可以对它们将处理的 URL 的长度进行限制,而不会出现截断或错误。URL 和查询字符串中保留字符的百分比编码可以显着增加它们的长度,虽然 Apache HTTP Server 最多可以处理 URL 中的 4,000 个字符,但 Microsoft Internet Explorer 限制为任何 URL 中的 2048 个字符。同样,在必须提交敏感信息(例如用户名和密码)以及其他数据以完成请求的情况下,不应使用 HTTP GET。在这些情况下,即使使用 HTTPS 对消息体进行加密,URL 中的数据也会以明文形式传递,许多服务器、代理、并且浏览器将以第三方可以看到的方式记录完整的 URL。在这些情况下,应该使用 HTTP POST。

于 2012-11-15T16:36:37.807 回答
0

只要您的数据少于2000字符,您就可以安全地使用get. 但是,如果在某些时候你觉得它超过了这个限制,那么它就不会在所有浏览器中始终如一地工作。

在您的ajax通话中,将typefrom更改为getto post,一切正常。

您可以发送的数据量没有限制post

于 2012-11-15T16:44:17.087 回答