2010-04-15 5 views
3

저는 jQuery의 getJSONP를 사용하고 있습니다. 응용 프로그램 사용법에 대한 통계를 얻기 위해 통화 지속 시간과 응답 크기를 기록하고 싶습니다. 이것은 크로스 도메인 아약스 호출이므로 JSONP를 사용해야하지만 JSONP 호출이 XMLHttpRequest 객체로 완료되지 않았기 때문에 jquery의 ajax에서 전체 콜백이 응답 내용을 전달하지 않습니다.아약스 응답 바이트 크기

제 질문은 JSONP 호출에서 응답 크기 (내용 길이)를 얻는 방법입니다.

$.ajaxSetup(
{ 
    complete:function(x,e) 
    { 
     log(x.responseText.length, x.responseText); 
    } 
} 

여기서 x는 JSON 호출하는 XMLHttpRequest 객체이지만 JSONP 대한 호출은 정의되지 않는다.

+1

은 현학적 인'x.responseText.length' 당신에게 * 문자 * 수,하지 바이트 수를 제공합니다. –

+0

보안상의 이유로 이럴 수 없습니다. – SLaks

+0

안녕 SLAKs, 빠른 답변을 주셔서 감사합니다,하지만 질문이 발생 : 이것을 달성하기위한 모범 사례가 무엇입니까? 예를 들어 json 응답에서 응답 길이를 직접 속성으로 가질 수 있습니다. 그러나 그것은 서버 측을 제어 할 수 없다면 그렇게 할 수 없다는 것을 의미합니다. –

답변

6

당신은 응답 헤더의 "콘텐츠 길이"를 얻을 수 있습니다 :

var contentsize; 
$.ajax('url', function(data, textstatus, request) { 
    contentsize = request.getResponseHeader("Content-Length")/1024; 
    //do stuff with your data 
}); 
+1

이 방법을 시도했지만 나에게 내용 길이 헤더는 항상 0을 반환합니다. ( –

0
$.ajax('url',function(data,textstatus,request) 
{ 
    var totalBytes = request.getResponseHeader('Content-length'); 

    //if u are looking for downloaded bytes 
    var dlBytes =request.responseText.length; 
}); 
+0

이 코드는 질문에 답할 수 있지만 _context_를 포함하는 것이 더 좋을 것입니다. _how_는 작동하고 _when_는 코드 용으로 사용하는 것이 좋습니다. 장기적으로 코드 전용 답변은 유용하지 않습니다. –

관련 문제