Ajax POST不起作用

时间:2013-01-28 12:48:39

标签: asp.net ajax jquery

我使用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。这是真的吗?还是有其他事情让我犯这个错误?

2 个答案:

答案 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