0

私のアプリケーションでは、jquery ajaxを介してWebページのhtmlをサーバーに送り返しています(このページのコピーをサーバーに保存する必要があるため)。コードは次のようになります

$(document).ready(function () {
    var pcontent = document.body.innerHTML;
     var url = new URI().addQuery("pcontent", pcontent);

    $.ajax({
        url: url, 
        type: "GET", 
        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>

これを達成する方法はありますか?

編集:ここから取得した入力から、コードを次のように変更しました(取得を投稿に変更)

  $(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;
});

それでも同じエラーが存在します

4

5 に答える 5

6

getリクエストではなく、 postリクエストを使用する必要があります。

var pcontent = document.body.innerHTML;
var url = new URI();

$.ajax({
    url: url,
    type: "POST",
    data: {"pcontent": pcontent},
    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;
于 2013-01-28T12:32:13.507 に答える
1

これは、GET 変数がサポートするデータ量が限られているためです。タイプ GET の代わりに type: POST を使用してください。

$.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");
 }
 }
});//indentation
于 2013-01-28T12:23:02.293 に答える
1

HTTP POST リクエストを使用します。

$.ajax({
    url: url,
    type: "POST"
    // ...
});
于 2013-01-28T12:23:05.897 に答える
1

リクエストを使用しPOSTます。GETIE では 2048 文字、その他のほとんどでは 65,538 文字に制限されています。

于 2013-01-28T12:23:53.417 に答える
1

GET メソッドは、URL 内のすべてのデータを送信します。

代わりに POST メソッドを使用してください。

于 2013-01-28T12:23:55.620 に答える