2012-04-16 20 views
1

請參閱下面的代碼,我試圖處理由twitter api調用返回的錯誤。記住Jquery不處理jsonp數據類型,因此超時,下面的代碼顯然會爲不存在的twitter ID引發錯誤。我想在我的req.error方法中捕獲該錯誤並將其顯示給用戶。但顯然,錯誤是隱藏的,確實來到console.log('Oh noes!'+ msg.error);這肯定與jQuery處理jsonp類型數據有關。有沒有人遇到過?任何解決方案jquery沒有正確處理來自twitter api的jsonp數據請致電

function findUserInfo(){ 


    var req = $.ajax({ 

    url: "https://twitter.com/users/show.json?id=neverexistID", 
    dataType : "jsonp", 
    timeout : 10000 

    }); 

    req.success(function(msg) { 
     console.log('Yes! Success!'+msg); 

    }); 

    req.error(function(msg) { 
     console.log('Oh noes!'+msg.error); 
    }); 


      } 

答: JSONP調用是特殊的,爲什麼我不能處理錯誤情況拋出通常是隱藏的錯誤,並且那,下面的插件處理情況良好,解決了我的問題。

jsonp plugin code.google.com/p/jquery-jsonp

+0

JQuery似乎並沒有處理這個問題,我用一個jsonp插件來解決我的「錯誤隱藏」問題,這裏是插件鏈接http://code.google.com/p/jquery-jsonp – cherit 2012-04-16 17:56:59

回答

2

有你的問題解決方法,改變你的網址呼籲:

url: "https://twitter.com/users/show.json?suppress_response_codes&id=neverexistID", 

從Twitter的documentation

suppress_response_codes:如果此參數存在,所有響應 將返回200 OK狀態代碼 - 甚至是錯誤。此 參數的存在是爲了適應在攔截所有非200響應的瀏覽器中運行的Flash和JavaScript應用程序 。如果使用了 ,那麼客戶端的工作就是通過解析 響應主體來確定錯誤狀態。請謹慎使用,因爲這些錯誤消息可能會更改爲 。