通过ajax将当前页面html发送回服务器

时间:2013-01-28 12:20:56

标签: asp.net ajax jquery

在我的应用程序中,我通过jquery ajax将我的网页的html发送回服务器(因为我需要在服务器中存储此页面的副本).Code就像这样

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

但仍存在同样的错误

5 个答案:

答案 0 :(得分:6)

您应该使用发布请求而非获取请求。

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;

答案 1 :(得分:1)

那是因为GET变量只支持有限数量的数据,使用类型:POST而不是类型GET

$.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

答案 2 :(得分:1)

使用HTTP POST请求。

$.ajax({
    url: url,
    type: "POST"
    // ...
});

答案 3 :(得分:1)

使用POST请求。 IE中GET限制为2048个字符,大多数其他字符为65,538个字符。

答案 4 :(得分:1)

GET方法发送URL中的所有数据。

请改用POST方法。