2017-02-16 8 views
0

私はAPIを呼び出して、JavaScriptで結果を期待どおりに戻しています。 400のステータスが返された場合、別のAPIが呼び出されます。これはifステートメントで処理しています。しかし、この "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);を行うとき、私は私のif文が発射されることはありませんなぜ私は本当にわからない"400"を入手します!

応答がある:

{ "ステータス":{ "コード": "400"、 "メッセージ": "エラー:結果がクエリに一致しない"、 "応答"}、{ "結果": ""}}

私は今これを注視していますし、本当に洞察に感謝します!

+0

コンソールログは文字列またはintとして400を返しますか?あなたが厳密な比較 '==='を使っているからです。ちょうど '==' –

+0

を使ってみてください興味深い - 私はちょうどif(!(e.response.length))で置き換えようとしました(状態=== "400")、それは起動します。 – bjorkland

+0

私はちょうど '=='を試みましたが、それは何も解決しませんでした。 – bjorkland

答えて

1

"成功"メソッドは、要求が成功したときに呼び出されます。 400が返されると、それは成功しません。要求が失敗したときに実行される関数を提供する代わりに、 "error"プロパティを使用します。

関連する問題