以下代码获取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>
答案 0 :(得分:4)
浏览器强加a limit on URL length。
如果您要提交大量数据,请使用POST请求并将其放在邮件正文中而不是查询字符串中。
答案 1 :(得分:0)
根据Wikipedia:
,使用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。
答案 2 :(得分:0)
只要您的数据少于2000
个字符,就可以安全地使用get
。但是,如果在某些时候你觉得它超过了这个限制,它将无法在所有浏览器中保持一致。
在ajax
来电中,将type
从get
更改为post
,一切正常。
使用post