2017-02-16 55 views
0

我正在調用API並在JavaScript中按預期返回結果。如果返回400狀態,我會調用另一個API,我正在使用if語句進行操作。然而,這個「如果」從來沒有被觸發,我想是因爲我的反應正在被閱讀的方式。我的代碼是:無法正確讀取API調用(JS)的響應

var getSearchPrimary = { 
        url: 'SEARCH_URL', 
        type: 'POST', 
        crossDomain: true, 
        dataType: 'jsonp', 
        context : this, 
        cache : true, 
        timeout: 60000, 
        success : function(e) { 
         status = JSON.stringify(e.status.code); 
         if(status === "400"){ 
          console.log("failed"); 
          this.getSearchSecondary(query); 
         }else{ 
         console.log(JSON.stringify(e)); 
         } 

在這種情況下,當我做console.log(status);我得到"400"所以我真的不知道爲什麼我的if語句永遠不會開火!

的響應是:

{ 「狀態」:{ 「代碼」: 「400」, 「消息」: 「錯誤:沒有結果匹配查詢」}, 「響應」:{ 「結果」: 「」}}

我一直在盯着這一段時間,真的很感謝任何見解!

+0

您的控制檯日誌返回400作爲字符串或int?因爲你使用嚴格的比較'==='。嘗試使用== == –

+0

有趣的 - 我只是嘗試用if(!(e.response.length))替換(status ===「400」)並且確實會觸發。 – bjorkland

+0

我曾試過'==',但那並沒有解決任何問題。 – bjorkland

回答

1

當請求成功時,調用「成功」方法。 400返回時,這不是成功。請使用「error」屬性來提供請求失敗時執行的功能。