我使用jquery ajax发送我的整个页面html回到服务器 我的代码就像这样
$(document).ready(function () {
var pcontent = document.body.innerHTML;
var url = new URI().addQuery("pcontent", pcontent);
$.ajax({
url: url, type: "POST"
, success: function (data) {
alert(data.html());
},
complete: function () {
alert(1);
},
error: function (jqXHR, error, errorThrown) {
if (jqXHR.status) {
alert(jqXHR.responseText);
} else {
alert("Something went wrong");
}
}
});
return false;
});
但是代码会出现这样的错误
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Request URL Too Long</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Request URL Too Long</h2>
<hr><p>HTTP Error 414. The request URL is too long.</p>
</BODY></HTML>
据我所知,我无法通过ajax发送整页HTML。这是真的吗?还是有其他事情让我犯这个错误?
答案 0 :(得分:4)
URL中的字符数限制。您的网址中最多可包含2000个字符。 不要在URL中发送html,而是使用jquery ajax的“data”参数。 像
这样的东西$.ajax({
url: url, type: "POST", data: {pcontent: $(pcontent).serialize()}
答案 1 :(得分:2)
Microsoft描述了HTTP Error 414,如下所示:
服务器拒绝为请求提供服务,因为Request-URI太长。这种罕见的情况很可能发生在以下情况:
客户端已将POST请求未正确转换为GET请求 长查询信息。
客户端遇到重定向问题(例如,a 重定向的URL前缀,指向其自身的后缀。)
服务器受到试图利用某些服务器中存在的安全漏洞的客户端的攻击,这些服务器使用固定长度的缓冲区来读取或操作Request-URI。 IIS检查URI的字符串长度,并在URI长于预期时不为请求提供服务
从您的查询中,您将整个innerHtml作为URL发送。这可能是其中一个原因。请改用data
。