Javascript 当响应超过一定大小时,AJAX抛出错误
我的ASP.NET 4.5.asmx web服务是web表单项目的一部分,“不分离”每当用户双击表行时都会返回一个xml字符串,以便可以从数据库中检索该行的详细信息 这本身就很好 然而,在一些情况下,响应比我看到的要长一些,大约200k,300k个字符,网页会抛出一个js警报弹出窗口说错误,我会在Chrome控制台中看到一个500内部服务器错误,没有进一步的细节。但是,当我转到web方法url并手动输入参数时,我会立即得到一个完整的xml字符串作为响应,不会出现任何问题 我使用以下同步js/ajax调用web方法:Javascript 当响应超过一定大小时,AJAX抛出错误,javascript,asp.net,ajax,web-services,.net-4.5,Javascript,Asp.net,Ajax,Web Services,.net 4.5,我的ASP.NET 4.5.asmx web服务是web表单项目的一部分,“不分离”每当用户双击表行时都会返回一个xml字符串,以便可以从数据库中检索该行的详细信息 这本身就很好 然而,在一些情况下,响应比我看到的要长一些,大约200k,300k个字符,网页会抛出一个js警报弹出窗口说错误,我会在Chrome控制台中看到一个500内部服务器错误,没有进一步的细节。但是,当我转到web方法url并手动输入参数时,我会立即得到一个完整的xml字符串作为响应,不会出现任何问题 我使用以下同步js/aj
function GetDetailsFromTableRow(userID, country, rowName) {
var url = "http://MyServer/MyWebService.asmx/MyWebMethod",
result = '';
$.ajax({
type: "POST",
async: false,
url: url,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({
'userID': userID,
'country': country,
'rowName': rowName
}),
success: function (response) {
result = response.d;
},
error: function (x, t, m) {
if (t === "timeout") {
alert('timeout!');
}
else {
alert(t); //<- this gets thrown apparently
}
}
});
return result;
}
从这个js中,您可以确定这个函数实际上没有抛出超时,所以我很确定我可以消除它
此外,我假设我自己不需要为仅仅几百KB的数据分块响应,但是:我可能错了
我也很清楚,调用web方法的更好方法是异步的,但我已经成功地以异步和同步的方式调用了其他实质性数据,因此我正在寻找一个问题的答案,为什么这对超过一定大小的响应不起作用我有80kB的响应,还有一些是200+kB的响应,这是以前的工作,后者没有,因为我显然不了解整个故事的某些部分
为了完整性:对web服务的async=true调用会导致完全相同的行为。在IE中调试js会产生以下错误: 使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了maxJsonLength属性上设置的值 如中所述,将以下条目添加到web.config会将maxJsonLength值增加到int.MaxValue: 随后的测试都是成功的。问题解决了
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"></jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>