2010-04-15 73 views
3

我正在使用jQuery的getJSONP,我想記錄通話的持續時間和響應的大小,以便能夠獲得有關我的應用程序使用情況的一些統計信息。 這是一個跨域ajax調用,所以我需要使用JSONP,但由於JSONP調用沒有使用XMLHttpRequest對象完成,所以jQuery的ajax的完整回調不會傳遞響應內容。ajax響應字節大小

所以我的問題是如何從JSONP調用中獲得響應大小(內容長度)。

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

這裏x是一個JSON調用的XMLHttpRequest對象,但是對於JSONP調用是未定義的。

+1

作爲迂腐,'x.responseText.length'給你*字符*數,而不是字節數。 – 2010-04-15 13:23:22

+0

出於安全原因,這是不可能的。 – SLaks 2010-04-15 13:13:33

+0

嗨SLaks,感謝您的快速回答,但隨後出現的問題: 是否有一個實現這一目標的最佳做法?例如我可以將響應長度作爲json響應中的直接屬性。但這意味着如果我無法控制服務器端,我無法做到這一點。 – 2010-04-15 13:23:57

回答

6

你可以得到響應報頭的「內容長度」:

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

我試過這種方式,但對我來說,內容長度標題總是返回0: ( – 2014-07-14 15:50:25

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_,解釋它的工作原理和_when_使用它。從長遠來看,僅有代碼的答案是無用的。 – 2016-05-16 14:24:15