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。我做错了什么???
答案 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" }
]