2017-05-16 81 views
-1

enter image description here我正在製作面部識別系統。我使用了稱爲Kairos的API。我得到的響應是面部特徵數據或來自非面部圖像的錯誤消息。我該如何改變回應並將它們顯示在屏幕上,例如「成功!這是一張臉」或「沒有臉」。我嘗試過if/else語句,但似乎沒有任何迴應。我應該怎麼做?如何基於ajax響應提醒你想要的任何響應

<script> 
 
$("#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({ 
 
\t  url  : "http://localhost/Karios/simple-detect/form-post.php", 
 
\t  type  : "POST", 
 
\t  data  : data, 
 
\t  dataType : 'text' 
 
\t }).done(function(response) { 
 
     console.log(response); 
 

 
     if (!response) { // Something unexpected happened. The message body is empty. 
 

 
      alert('Hmm, unexpected response from Kairos'); 
 

 
     } else if (response['Errors'] && response['Errors'].size() > 0) { // If Errors is defined in the response, something went wrong. 
 

 
      if (response['Errors'][0]['ErrCode'] == 5002) { // This appears to be the error when no faces are found. 
 

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

 
      } else { 
 

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

 
      } 
 
      
 
     } else { // If there are no errors in the response, can we assume it detected a face? I guess so. 
 

 
      alert('Face(s) detected'); 
 
      // The response has a ton of information about what it saw, including gender, age, ethnicity 
 
      // and more. 
 

 
     } 
 
    
 
}) 
 
} 
 
});

+1

到底是什麼問題?你的代碼是否工作? 'alert'和'console.log'是否按預期工作?爲什麼不把響應放入頁面上的元素? –

+0

除了'.done()'之外,你還嘗試過使用'.fail()'嗎? – larz

+0

可以在響應成功時分享輸出,哪裏不是? – rafrsr

回答

1

根據您收到的迴應,你可以寫上你要顯示的內容:

if(response === true){ 
    alert('success!'); 
} 
else{ 
    alert('fail!'); 
} 

編輯

重定向到另一個頁面,使用:window.location = http://mywebsite.com;

爲了使按鈕無法點擊,你將需要設置殘疾人屬性:document.querySelector('button').setAttribute('disabled',true);

編輯

如果這是你的迴應:{"Errors":[{"Message":"no faces found in the image","ErrCode":5002}]},那麼你必須先分析它,因爲它很可能是一個字符串。然後在你的條件語句中,檢查它是否存在。

var obj = '{"Errors":[{"Message":"no faces found in the image","ErrCode":5002}]}'; 
 

 
obj = JSON.parse(obj); 
 

 
if(obj.Errors){ 
 
console.log("errors exist"); 
 
}

+0

它的工作原理!非常感謝! –

+0

@JimmyLiao高興地幫助:) –

+0

@JimmyLiao一定讓你接受答案。 –

0

除了.done(),您可以撥打.fail()當AJAX是不成功的,這將運行。

$("#testDetect").click(function() { 
 
    var data = {} 
 
    $.ajax({ 
 
    url: "http://localhost/Karios/simple-detect/form-post.php", 
 
    type: "POST", 
 
    data: data, 
 
    dataType: 'text' 
 
    }).done(function(response) { 
 
    alert(response) 
 
    }).fail(function(error) { 
 
    alert("Not a face") 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="testDetect">Test</button>

+0

你的方法可行,但是如果我想重定向到另一個頁面,如果有一張臉,並且灰色/按鈕如果沒有臉,我該怎麼做?我似乎每次我想要做某件事時,兩個響應都會執行該行... –

+0

當你說'我似乎每次我想要做某件事時,這兩個響應都會執行該行......'你的意思是它顯示兩個警報嗎?如果這是你想要的下一個行動方案,你可以搜索堆棧溢出以尋求如何重定向和禁用按鈕的幫助。 – larz