我是asp.net web api的新手。我正在用jquery,跨域进行一个简单的调用。一切似乎都正常工作,当我甚至检查我得到的结果时,我看到它将json发回给我,但是调用因“Uncaught SyntaxError:Unexpected token:”错误而失败。我不知道为什么会失败,谢谢你的帮助。
$.ajax({
url: 'http://webapidomain.domain.com/api/Register?firstName=' + firstName + '&lastName=' + lastName + '&' + 'email=' + email + '&password=' + password,
type: 'GET',
dataType: 'jsonp',
contentType: 'application/json',
success: function (result) {
alert(result);
},
complete: function () {
$.mobile.hidePageLoadingMsg();
}
});
答案 0 :(得分:2)
Web API不支持开箱即用的JSONP。您需要一个JSONP媒体类型格式化程序。 (媒体类型格式化程序是将数据序列化为特定格式的对象,例如JSON或XML。)
Rick Strahl在这里有一些可能有用的代码:http://www.west-wind.com/weblog/posts/2012/Apr/02/Creating-a-JSONP-Formatter-for-ASPNET-Web-API(我还没试过。)
当您要求JSONP时,您返回JSON的原因是,当Web API与您请求的类型不匹配时,它会返回其列表中的第一种格式,默认情况下为JSON。
答案 1 :(得分:0)
如果您正在进行跨域调用,则SAME-ORGIN Policy默认情况下会被许多浏览器阻止。如果你需要解决这个问题,你需要使用JSONP(如果你可以修改你正在调用的端点产生的输出,即你拥有域名),否则你需要使用你的web服务器作为代理并连接到那个端点指向并查询您的Web端点以获取相应的数据。
此外,某些网站会为您执行此操作(充当代理以生成JSONP结果)并生成jsonp结果。