如何使用ajax方法在web api中调用用户定义的函数

时间:2015-03-11 11:55:56

标签: asp.net-mvc-4 asp.net-web-api2

我在MVC4中调用用户定义的web api函数时遇到问题请建议我该怎么做。我是第一次使用web api。

我的API函数:

     public List<Voice> GetVoicesByStatus(string Status)
    {
        List<Voice> Voc = db.Voices.Where(x => x.Status == Status).ToList();
        if (Status == null)
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
        }

        return Voc;
    }

Ajax方法:

       function GetVoicesByStatus(status) {
        $.ajax({
            type: 'GET',
            url: 'http://xx.xx.xx.xx.xx:xx/api/Applications/VoicesByStatus/' + status,
            data: JSON.stringify({}),
            contentType: 'application/json',
            dataType: 'json',
            headers: { 'AuthToken': '2FEA7374-EBA2-4367-9492-6DB3334AD2AF' },
            success: function (data) {
                for (var i = 0; i < data.length; i++) {
                    var str = "<tr><td>" + data[i].ID + "</td><td>" + data[i].APIKey + "</td><td>" + data[i].CreatedBy + "</td><td><a href='#' onclick='fnDelete(&#39;" + data[i].ID + "&#39;)'>Delete</a></td></tr>";
                    $("#app").append(str);
                }

            }
        });
    }

错误:

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码

$.ajax({
            type: 'GET',
            url: 'http://xx.xx.xx.xx.xx:xx/api/Applications/GetVoicesByStatus?status=' + status,
            contentType: 'application/json',T                
            headers: { 'AuthToken': '2FEA7374-EBA2-4367-9492-6DB3334AD2AF' },
            success: function (data) {
                for (var i = 0; i < data.length; i++) {
                    var str = "<tr><td>" + data[i].ID + "</td><td>" + data[i].APIKey + "</td><td>" + data[i].CreatedBy + "</td><td><a href='#' onclick='fnDelete(&#39;" + data[i].ID + "&#39;)'>Delete</a></td></tr>";
                    $("#app").append(str);
                }

            }

答案 1 :(得分:0)

我认为这是与CORS相关的问题。在MVC4中没有默认的CORS处理程序。并使用JSONP作为数据类型。有关启用CORS的信息,请参阅以下链接。

http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx

它可能对你有帮助。