2012-04-18 59 views
4

注意:我檢查了其他答案,包括this question re: a pre-jQuery 1.5 JSONP error issue that has now been resolved。我正在使用JQuery 1.7,我相信不會遇到這個問題。JQuery 1.7中的JSONP錯誤

JQuery 1.5 proper error functions are possible with JSONP(參見'The jqXHR Object')。但是,錯誤功能似乎並沒有被解僱。

$.getJSON(url, function(response) { 
    console.log(response) 
}).error(function() { console.log('Error occurred.') }) 

看着Chrome開發工具中,JSONP請求生成以下錯誤:

GET https://twitter.com/status/user_timeline/somepretendusername.json?count=2&callback=jQuery171005595548846758902_1334772179012&_=1334772179132 400 (Bad Request) 

然而.error()回調只是似乎沒有運行。我需要什麼來正確處理JSONP的錯誤處理?

+0

你是否使用'.fail()'回調獲得了相同的結果? – 2012-04-18 18:24:33

+0

@KevinB謝謝。唉.fail()似乎也不起作用。 – mikemaccana 2012-04-18 18:30:20

回答

2

只有在請求發生錯誤時纔會觸發錯誤函數。正在提出請求,但如果用戶名不存在,Twitter會返回400。我嘗試使用一個假的用戶名,並得到了相同的響應,但後來我用我的用戶名,它像一個冠軍。

我看到你只是問如何用JSONP處理錯誤。無論出於什麼原因,似乎jQuery沒有很好的錯誤處理。我確實發現了一個承諾爲JSONP提供實際錯誤處理的插件。看看here

[edit2]看看它,它的工作原理!

$(document).ready(function() { 
    var url = 'https://twitter.com/status/user_timeline/thisisnotarealtwitterhandle.json?count=2&callback=?'; 
    var jqxhr = $.jsonp({ 
     url: url, 
     success: function(response) { 
      console.log(response) 
     } 
    }).fail(function() { console.log('error'); }); 
}); 
+0

謝謝,但我使用真正的用戶名。我的問題是如何得到正確的錯誤處理工作,而不是如何避免400錯誤。 – mikemaccana 2012-04-18 18:29:08

+0

@nailer我想真正的問題是如果狀態碼400應該真的在jQuery中引發錯誤。您可以使用'.always'回調並獲取請求的狀態碼,然後如果狀態碼爲400,則執行此操作,否則請執行此操作。 – 2012-04-18 18:32:49

+0

是的,我想我更好地理解你的問題。它似乎源於這樣的事實:$ .getJSON不成功時會引發錯誤。 – CWSpear 2012-04-18 18:34:02