所以我正在閱讀Malsup的twitter plugin上的代碼,我注意到他編寫了自己的方法來處理jsonp,但是超時和錯誤。我只能假設內置的jQuery方法'getJSON'沒有這個功能,即使它顯然工作正常。使用jQuery的getJSON()方法
因此,我是否應該繼續在我製作JSONP請求的項目中使用Malsups版本,或者只是堅持使用jQuery的方法。我通過電子郵件發送了Malsup和保羅愛爾蘭人,詢問爲什麼有必要寫這篇文章,但我沒有聽到。不能怪他們真的:)
$.getJSONP = function(s){
s.dataType = 'jsonp';
$.ajax(s);
// figure out what the callback fn is
var $script = $(document.getElementsByTagName('head')[0].firstChild);
var url = $script.attr('src') || '';
var cb = (url.match(/callback=(\w+)/) || [])[1];
if (!cb)
return; // bail
var t = 0, cbFn = window[cb];
$script[0].onerror = function(e){
$script.remove();
handleError(s, {}, "error", e);
clearTimeout(t);
};
if (!s.timeout)
return;
window[cb] = function(json){
clearTimeout(t);
cbFn(json);
cbFn = null;
};
t = setTimeout(function(){
$script.remove();
handleError(s, {}, "timeout");
if (cbFn)
window[cb] = function(){
};
}, s.timeout);
function handleError(s, o, msg, e){
// support jquery versions before and after 1.4.3
($.ajax.handleError || $.handleError)(s, o, msg, e);
}
};
謝謝你,這是有道理的。 – screenm0nkey 2010-08-02 13:56:51