试图对我的Web API进行Ajax调用,而不是工作,得到错误

时间:2013-12-27 16:39:03

标签: ajax jquery asp.net-web-api

WebAPI和网站都位于localhost:80,因此跨域不应成为问题。这是我的客户端代码:

$(document).ready(function() {
            $.ajax({
                type: 'GET',
                url: 'http://localhost/SixFilmWebAPI/api/SixFilm/60',
                dataType: "json",
                success: function (data) { WriteResponse(data); },
                error: function (err) { alert('error!'); },
            });
        });

        function WriteResponse(actors) {
            var strResult = "<table><th>Name</th><th>Dob</th><th>Dod</th>";
            $.each(actors, function (index, actor) {
                strResult += "<tr><td>" + message.Name + "</td><td> " + message.Dob + "</td></tr>" + message.Dod + "</td></tr>";
            });
            strResult += "</table>";
            $("#divResult").html(strResult);
        }

每次我运行我的网站时,error回调函数都会被点击,但是,查看Fiddler,我得到的是我的JSON对象返回200 OK响应。手动导航到WebAPI URL也会返回JSON。我做错了什么???

1 个答案:

答案 0 :(得分:2)

  

WebAPI和网站都位于localhost:80,因此跨域不应成为问题。

在这种情况下使用relative url:

url: '/SixFilmWebAPI/api/SixFilm/60'

然后打开Web浏览器开发人员工具栏并检查“网络”选项卡。例如,在Google Chrome的开发人员工具栏中,您将看到发送到服务器的确切请求以及响应状态代码和正文。这样可以很好地指示可能出现的问题。

还在控制器操作中放置断点并查看它是否被击中。如果不是,则是路由或绑定问题。在所有情况下,浏览器的开发人员工具栏都可以帮助您对其进行排序。同时请关注Console标签,该标签将显示潜在的javascript错误和XHR警告。然后查看success回调内部。会受到打击吗?您是否从Web API返回了JSON数组?因为从我可以看到你试图在那里循环actors变量。因此,请确保您的服务器返回了这样的JSON:

[
    { "Name":"foo", "Dob":"2010-11-01", "Dod":"2013-07-01" },
    { "Name":"bar", "Dob":"1967-05-17", "Dod":"2001-04-21" }
]