jQuery调用Web API无法正常工作

时间:2016-07-17 02:35:54

标签: javascript c# jquery ajax asp.net-web-api

  • .NET 4.61,WebForms,WebAPI 2,C#

我对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:

enter image description here

我在这里错过了什么来进入完成/失败的承诺?

2 个答案:

答案 0 :(得分:2)

您使用了successerror回调的错误名称:

$.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);
});