繁体   English   中英

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

[英]Sending current page html back to server through ajax

在我的应用程序中,我通过jQuery ajax将网页的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;
});

但仍然存在相同的错误

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

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;

这是因为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

使用HTTP POST请求。

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

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

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

请改用POST方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM