문제

jQuery의 getjson () 호출을 통해 크로스 도메인 웹 서비스를 호출하고 있습니다. 응답 객체 크기가 꽤 크기 때문에 웹 서비스의 최대 JSON 크기를 사용했습니다. 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가 게시물과 요청 모두에 대해 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 객체입니다. stringify 다음 평가할 필요는 없습니다. 즉, 그대로 사용하십시오.

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


업데이트: 그 전에 당신은 또한 변경할 수 있습니다 getResponse 기능 :

function getResponse() {
    var localService = new getServiceProxy("SearchData.asmx");
    localService.invoke('Search', '', successcall);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top