2017-02-07 12 views
2

JSON、JS、AJAXの新機能です。私は目標を進めるためにいくつかのサンプルコードを使用しています。私が理解できないことは、JSONが成功セクションがまだ発火しているエラーオブジェクトである場合です。エラーがtrueの場合、オブジェクトdがヌルまたは非オブジェクトの場合、コンソールにエラーが表示されます。何を私は間違ってやったのですか?良いTIAAJAXでエラーが返されない

結果タイプ:

JSON: {"data":["1","breast","2","wing","3","thigh","4","leg","5","half","6","quarter white","7","quarter dark","9","whole"],"error":false} 

結果の型エラー:サーバーが4XXまたはエラーコールバックが実行するための5xxのようなエラーステータスコードを返す必要があります

JSON: {"error":true} 

$.ajax({ 
      type  : 'GET', 
      url  : 'getsubtypes2.php', 
      data  : dataString, 
      dataType : 'JSON', 
      cache: false, 
      success : function(data) {   
       var output;    
       var d = data.data; 
        var output = ""; 
        for (var i = 0 ; i< d.length; i=i+2) {//error gets to this line 
         var count = d[i]; 
         var newOption = d[i+1]; 
         output += "<option value='"+count+"'>"+newOption+"</option>"; 
        } 
        $('#select3').empty().append(output); 
      }, 
      error: function(){ 
      $('#select3').empty(); 
        console.log("Ajax failed"); 
      } 
     }); 
+0

エラーエラーを拾って提案しました。あなたは成功メソッド内のそのプロパティのチェックを追加する必要があります。 if(data.error){// throw} –

答えて

2

。サーバーが2xxを返す場合、成功コールバックが実行されます。

明示的にエラーコードを送信して、errorコールバックの実行を確認してみることができます。これはquestionを参照してください。

2

JQueryの$.ajax()ルーチンは、HTTP応答コードを使用してエラーを検出します。サービスがエラー状態(たとえいくつかのサービスで起こる)であっても200を返す場合、これは起こり得る。

サービスが実際に復帰しているかどうかをデバッガのネットワークパネルで確認してください。

0

としては、これが本当のHTTPエラーそのときにのみ発動する正しく

$.ajax({ 
      type  : 'GET', 
      url  : 'getsubtypes2.php', 
      data  : dataString, 
      dataType : 'JSON', 
      cache: false, 
      success : function(data) {   
       var output;    
       var d = data.data; 
       var e = data.error; 
      if(e) { 
       $('#select3').empty(); 
      } 
      else { 
      var output = ""; 
        for (var i = 0 ; i< d.length; i=i+2) { 
         var count = d[i]; 
         var newOption = d[i+1]; 
         output += "<option value='"+count+"'>"+newOption+"</option>"; 
        } 
        $('#select3').empty().append(output); 
       } 
      }, 
      error: function(){ 
      console.log("Ajax failed"); 
      } 
     }); 
+0

サーバーレスポンスにアクセスできますか?エラーが発生した場合は、HTTPエラーコードを送信してください。これにより、他のフロントエンド技術に切り替えたことがあった場合でも、エラーが効果的に検出されるようになります。 –

関連する問題