1

我对 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();
    }
});
4

2 回答 2

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。

于 2012-07-03T05:29:33.927 回答
0

如果您进行跨域调用,则默认情况下,许多浏览器会被SAME-ORGIN Policy阻止。如果您需要解决这个问题,您需要使用 JSONP(如果您可以修改您调用的端点产生的输出,即您拥有该域),否则您需要使用您的 Web 服务器作为代理并连接到该端指向并查询您的 Web 端点以获取相应的数据。

还有一些网站会为您执行此操作(充当生成 JSONP 结果的代理)并生成 jsonp 结果。

于 2012-07-03T03:29:12.047 回答