我对WebAPI控制器进行了以下AJAX调用:
$.ajax('/api/search', {
type: 'POST',
data: { '': searchText }, // data to submit
done: function (data, status, xhr) {
alert('here');
console.log(data);
$('#search-results').append('status: ' + status + ', data: ' + data);
},
fail: function (jqXhr, textStatus, errorMessage) {
alert('here2');
$('#search-results').append('Error' + errorMessage);
}
});
和API控制器代码:
public class SearchController : ApiController
{
[HttpPost]
public FindViewModel Find([FromBody] string aSearchText)
{
//Code omitted that does the actual population of the result
//Return them alphabetically
result.Items = result.Items.ToList().OrderBy(r => r.DisplayText).ToList();
return result;
}
}
然而,我从未接受过原始AJAX调用的完成或错误承诺。即没有警报。 Firebug使用我期望的数据显示200个reposonse:
我在这里错过了什么来进入完成/失败的承诺?
答案 0 :(得分:2)
您使用了success
和error
回调的错误名称:
$.ajax('/api/search', {
type: 'POST',
data: { '': searchText }, // data to submit
success: function (data, status, xhr) {
alert('here');
console.log(data);
$('#search-results').append('status: ' + status + ', data: ' + data);
},
error: function (jqXhr, textStatus, errorMessage) {
alert('here2');
$('#search-results').append('Error' + errorMessage);
}
});
此外:
我在这里错过了什么来进入完成/失败的承诺?
您在这种情况下使用回调,请注意承诺是另一回事。有关详细信息,请查看jQuery.ajax()文档。
答案 1 :(得分:0)
问题是.done()
,.fail()
不是$.ajax()
选项。您可以将.done()
和.fail()
链接到$.ajax()
来电
$.ajax({
url: '/api/search',
type: 'POST',
data: { '': searchText } // data to submit
})
.done(function (data, status, xhr) {
alert('here');
console.log(data);
$('#search-results').append('status: ' + status + ', data: ' + data);
})
.fail(function (jqXhr, textStatus, errorMessage) {
alert('here2');
$('#search-results').append('Error' + errorMessage);
});