通过ajax将当前页面html发送回服务器
在我的应用程序中,我通过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; });
但这会引发错误:
Request URL Too Long Request URL Too Long
HTTP Error 414. The request URL is too long.
有没有办法实现这个目标?
编辑:从我从这里得到的输入我已经改变了我的代码(更改获取发布)
$(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; });
但仍然存在相同的错误
你应该使用post request not get request。
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;
使用POST
请求。 IE中的GET
限制为2048个字符,大多数其他字符为65,538个字符。
GET方法发送URL中的所有数据。
请改用POST方法。
使用HTTP POST请求。
$.ajax({ url: url, type: "POST" // ... });
这是因为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