0

我正在使用 jquery ajax post 将整个页面 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。是真的吗?或者还有什么其他的东西让我犯了这个错误?

4

2 回答 2

4

URL 中的字符数有限制。您的 URL 中最多可以包含 2000 个字符。不要在 URL 中发送您的 html,而是使用 jquery ajax 的“数据”参数。就像是

$.ajax({
        url: url, type: "POST", data: {pcontent: $(pcontent).serialize()}
于 2013-01-28T12:52:24.303 回答
2

微软这样描述 HTTP 错误 414:

服务器拒绝为请求提供服务,因为 Request-URI 太长。这种罕见的情况很可能发生在以下情况:

客户端错误地将 POST 请求转换为具有长查询信息的 GET 请求。

客户端遇到了重定向问题(例如,重定向的 URL 前缀指向自身的后缀)。

服务器受到客户端的攻击,该客户端试图利用某些服务器中存在的安全漏洞,这些服务器使用固定长度的缓冲区来读取或操作 Request-URI。IIS 检查 URI 的字符串长度,当 URI 比预期的长时不为请求提供服务

从您的查询中,您将整个 innerHtml 作为 URL 发送。这可能是原因之一。改为使用data

于 2013-01-28T12:57:46.870 回答