浏览器响应大小限制

我通过jQuery的getJson()调用来调用我的跨域Web服务。 由于我的响应对象大小非常大,我使用了最大的JSon大小用于我的Web服务。 我检查了getJson()是否给出了正确的响应对象。 但仍然没有调用我的回调函数。 Firebug说它超过了(firefox)响应大小。

任何人都可以告诉我最新的浏览器响应大小限制标准浏览器例如(firefox,ie)处理以及如何处理问题?

这是相同的代码片段。

//Wrapper call to the actual getJson call function getResponse() { var localService = new getServiceProxy("SearchData.asmx"); localService.invoke("Search", "", "successcall"); } //getJson call function getServiceProxy(serviceUrl) { var _I = this; this.serviceUrl = serviceUrl; // *** Call a wrapped object this.invoke = function(method, data, callback, error) { if (data == "") { var url = _I.serviceUrl + "/" + method + "?output=json&callback=?"; } else { url = _I.serviceUrl + "/" + method + "?" + data + "&output=json&callback=?"; } $.getJSON(url, function(arg) { var evalstr = callback + "(" + JSON.stringify(arg) + ");"; eval(evalstr); }); } } //success callback function function successcall(multiSearchResponse) { //use the response. } 

任何帮助将受到高度赞赏。

谢谢Subrat。

我曾经在一个项目中经历过这一次,我记得IE对POST和GET请求的限制为2083个字符。 FF有一个更大的限制,但不是无限的。

http://support.microsoft.com/kb/208427

看起来很奇怪的一件事是回调函数:

  $.getJSON(url, function(arg) { var evalstr = callback + "(" + JSON.stringify(arg) + ");"; eval(evalstr); }); 

由于您使用的是JSONP(由于请求是跨域的),响应服务应返回如下的JavaScript:

 jQueryGeneratedUniqueCallbackName12345({my: 'data', foo: 'bar'}); 

所以arg参数是实际的JavaScript对象。 您不应该进行字符串化然后评估它。 只需按原样使用它,即:

  $.getJSON(url, function(data) { console.log(data.foo); }); 

很久以前,如果您对更多细节感兴趣,我会在我的博客上发布JSONP的内部工作原理 。

也许您希望$.getJSON部分看起来如下:

 $.getJSON(url, function(arg) { callback.apply(null, JSON.stringify(arg)); }); // Or more simply $.getJSON(url, function(arg) { callback(JSON.stringify(arg)); }); 

有关apply更多信息: MDN Docs


更新:在此之前,您还可以将getResponse函数更改为:

 function getResponse() { var localService = new getServiceProxy("SearchData.asmx"); localService.invoke('Search', '', successcall); }