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>

私が理解している限り、ページ全体のhtmlをajax投稿で送信することはできません.それは本当ですか? または、私にとってこのエラーを発生させるものは他にありますか?

4

2 に答える 2

4

URL の文字数には制限があります。URL には最大 2000 文字を含めることができます。URL で html を送信しないでください。代わりに、jquery ajax の「data」パラメーターを使用してください。何かのようなもの

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

Microsoft は、HTTP エラー 414 を次のように説明しています。

Request-URI が長すぎるため、サーバーは要求の処理を拒否しています。このまれな状態は、次の状況で発生する可能性があります。

クライアントが POST リクエストを、長いクエリ情報を含む GET リクエストに不適切に変換しました。

クライアントでリダイレクトの問題が発生しました (たとえば、リダイレクトされた URL プレフィックスがそれ自体のサフィックスを指している)。

サーバーは、固定長バッファを使用して Request-URI を読み取ったり操作したりする一部のサーバーに存在するセキュリティ ホールを悪用しようとするクライアントによる攻撃を受けています。IIS は URI の文字列の長さをチェックし、URI が予想よりも長い場合、要求を処理しません。

クエリから、innerHtml 全体を URL として送信しています。それが理由の一つかもしれません。data代わりに使用してください。

于 2013-01-28T12:57:46.870 に答える