2017-05-17 9 views
1

enter image description here私は顔の認識APIからajaxレスポンスを取得しようとしています。応答は、顔のデータの特徴である、 エラーメッセージがあるif文にエラーメッセージを入れる方法if(...)

{"Errors":[{"Message":"no faces found in the image","ErrCode":5002}]}

応答メッセージは、私が「成功」を警告することができるように、私がもし/ else文を書く必要がありますどのように

{"images":[{"status":"Complete","width":236,}]}]}

です顔/応答がある場合は警告を表示し、顔/エラーがない場合は「失敗」を警告しますか?

$("#testDetect").click(function() { 
 
    var file = $('#imageFile')[0].files[0]; 
 
    var reader = new FileReader(); 
 
    reader.readAsDataURL(file); 
 
    reader.onloadend = function() { 
 
     var imageData = parseImageData(reader.result); 
 
     var data = {}; 
 
     data.image = imageData; 
 
     $.ajax({ 
 
     url  : "http://localhost/Karios/simple-detect/form-post.php", 
 
     type  : "POST", 
 
     data  : data, 
 
     dataType : 'text' 
 
    }).done(function(response) { 
 

 
    console.log(response); 
 

 
      if (!response) { 
 

 
       alert('Hmm, unexpected response from Kairos'); 
 
      } else if (response['Errors'] && response['Errors'].size() > 0) { 
 
       if (response['Errors'][0]['ErrCode'] == 5002) { 
 

 
        alert(response['Errors'][0]['Message']); 
 

 
       } else { 
 

 
        alert('Some other error occurred:\n' + response['Errors']['ErrorCode'] + ': ' + response['Errors']['Message']); 
 

 
       } 
 
       
 
      } else { 
 

 
       alert('Face(s) detected'); 
 
     } 
 
    }) 
 
    } 
 
});

顔や警告がある場合、 "不合格" の顔

+0

エラーが発生していないときにどのような応答が返ってくるのですか? –

+0

あなたはajax呼び出しに渡すオブジェクトを2つ以上渡すことができます。エラーと成功は両方ともコールバックです。何らかのエラーが発生した場合、エラーコールバックは成功コールバックと呼ばれます。この方法では、エラーを処理する場所を正確に知ることができます。 – nurulnabi

+0

@UjjwalKumarGupta彼らが私に応答を送ったら、「成功」を警告したい。彼らが私にエラーを送った場合、私は "失敗"を警告したい。 –

答えて

2

がない場合、実際のjqueryので、それぞれについての.doneと.failを与える:

$.ajax({ 
       url  : "http://localhost/Karios/simple-detect/form-post.php", 
       type  : "POST", 
       data  : data, 
       dataType : 'text' 
      }).done(function(response) { 
    try { 
let jsonResponse = JSON.parse(response); 
     if(jsonResponse.Errors && jsonResponse.Errors[0] && jsonResponse.Errors[0].ErrCode ===5002) {alert(jsonResponse.Errors[0].Message);} 
    } catch(err) { console.log("bad response");} 
       alert("success"); 
      }) 
      .fail(function() { 
      alert("error"); 
      }) 
      .always(function() { 
      alert("complete"); 
      }); 
+2

ahhですが、障害がajax障害を意味するのではなく、応答で返された障害を示す場合はどうなりますか? –

+0

コードを編集してエラーコードを確認し、それに応じてメッセージを印刷してください。 – binariedMe

+1

この新しいコードは、応答がオブジェクトであると仮定し - データ型として== 'text' - レスポンスがテキストになります:P(私は裏側の痛みです) –

1

Errorsのキーは、一致するものがない場合のみ存在するとします。

{"Errors":[{"Message":"no faces found in the image","ErrCode":5002}]} 

一つの方法である:

if(response.Errors){ 
    alert("fail!"); // or you can return the error message 
}else{ 
    alert("success"); 
} 

応答は常に、その後Errorsキーが含まれている場合:AJAX Events代わりの応答解析のための

if(response.Errors.length > 0){ 
    // fail 
} else { 
    //success 
} 
+0

編集... –

+0

は、私は、コンソールで見たものの写真をアップロードし、私はそれが –

0
 $.ajax({ 
     url  : "http://localhost/Karios/simple-detect/form-post.php", 
     type  : "POST", 
     data  : data, 
     dataType : 'text' 
    }).done(function(response) { 

     if(response.Errors) 
     { 
     alert("fail!"); 
     console.log(response.Errors.Message) 
    } 
    else{ 
    alert('success!'); 
    } 
     console.log(response) 
}) 
+0

レスポンスとエラーの両方がまだ「成功」を警告する役立つかもしれないと思う.... –

+0

は、あなたがまだ中にエラーが発生している可能性がありミリアンペアJSONレスポンスエラーレスポンスと成功resonseの両方を供給することができれば良くなる –

+0

私はこれを試してみてください –

0

使用ハンドラを。登録はGlobal Ajax Event Handlersで可能です。例えば
.done()メソッドを削除し、あなたのjavascriptに以下のコードを追加します。

$(document).ajaxSuccess(function() { 
    alert("AJAX request is success!"); 
}); 
$(document).ajaxError(function() { 
    alert("AJAX request completes with an error."); 
}); 

またはローカルイベントを処理する:

$.ajax({ 
    // ... 
    success: function(){ 
    alert("AJAX request is success!"); 
    }, 
    error: function(){ 
    alert("AJAX request completes with an error."); 
    } 
}); 
+0

私のためにコードを書くことができますか?私はプログラミングに新しいです:) –

+0

@ジミー遼、それは準備ができています。 – Alexander

+0

キャッチされていないにReferenceError:TRACKING_NAMEは –

2
$("#testDetect").click(function() { 
    var file = $('#imageFile')[0].files[0]; 
    var reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onloadend = function() { 
     var imageData = parseImageData(reader.result); 
     var data = {}; 
     data.image = imageData; 
     $.ajax({ 
     url  : "http://localhost/Karios/simple-detect/form-post.php", 
     type  : "POST", 
     data  : data, 
     dataType : 'text', 
     success:function(response){ 
     alert('success');  //do your stuff here on success 
     }, 
     error:function(xhr, textStatus, errorThrown){ 
     alert('fail');   //do your stuff here on fail 
     } 
    }) 
    } 
}) 

errorsuccessコールバックの表情を持っています。 ajaxリクエストが正常に解決すると、successコールバックが呼び出され、リクエストが成功したことを示し、結果はresponseに格納されます。それ以外の場合は、errorコールバックが呼び出されます。

+0

うまくいかなかった...コンソールで見た写真をアップロードしました。 –

+0

が 'dataType'フィールドを削除するのに役立つと思います。何か問題が起きた場合は、正式な文書のとおり正しい構文になります。 – nurulnabi

関連する問題