我试图通过面部识别API获取ajax响应。响应是面部的数据特征, 错误信息是
{"错误":[{"消息":"在图像中找不到面孔"," ErrCode":5002}] }
回复信息是
{&#34;图像&#34;:[{&#34;状态&#34;:&#34;完整&#34;&#34;宽度&#34;:236,}]}]} < / p>
我应该如何编写If / else语句,以便我能提醒&#34;成功&#34;如果有面子/反应,警告&#34;失败&#34;如果没有面子/错误?
$("#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');
}
})
}
});
&#13;
如果有脸和警告&#34;失败&#34;如果没有脸
答案 0 :(得分: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" );
});
答案 1 :(得分: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
}
})
}
})
查看error
和success
回调。当ajax请求成功解析时,将调用success
回调,指示请求成功,结果将包含在response
中,否则将调用error
回调。
答案 2 :(得分: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
密钥,则:
if(response.Errors.length > 0){
// fail
} else {
//success
}
答案 3 :(得分: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)
})
答案 4 :(得分:0)
使用AJAX Events的处理程序而不是响应解析。可以使用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.");
}
});