【问题标题】:Unexpected Token Error on AJAX JSONP RequesetAJAX JSONP 请求上的意外令牌错误
【发布时间】:2012-10-07 18:34:11
【问题描述】:

我开发了一个使用 JSON 服务的移动网站。我使用 JSONP,因为它是跨域的。它正在工作并突然坏了,我无法理解为什么。以下是我可以在浏览器中检查的内容:

我的 Javascript 调用:

$.ajax({
url: apiBaseURL + "getoperators?appKey=" + appKey,
dataType: 'jsonp',
success: function(data) {
    console.log(data);
},
    error: function(jqXHR, textStatus, errorThrown) {             }
});

当我查看响应时,它的格式似乎正确,如下所示:

{"GetOperatorsResult":{"Error":"","Results":[{"City":"Cape Town","IsPublic":true,"Mode":"Bus","Name":" Golden Arrow"},{"City":"开普敦","IsPublic":true,"Mode":"Shuttle","Name":"Jammie Shuttle"},{"City":"开普敦"," IsPublic":true,"Mode":"Train","Name":"Metrorail"},{"City":"Cape Town","IsPublic":true,"Mode":"Bus","Name": "MyCiti"}],"状态":"成功"}}

这是网络审核:

请求网址:http://api.wimt.co.za/v1/json/public.svc/getoperators?appKey=EB478338-73C7-483F-8AB4-B4DE2219D4DC&callback=jQuery18208015921225305647_1350479608882&_=1350479608950 请求方法:GET 状态码:200 OK 请求标头view source 接受:/ 接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3 接受编码:gzip、deflate、sdch 接受语言:en-US,en;q=0.8 缓存控制:max-age=0 连接:保持活动 主持人:api.wimt.co.za 参考:http://localhost:8300/index.html 用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4 查询字符串参数查看 URL 编码 应用密钥:EB478338-73C7-483F-8AB4-B4DE2219D4DC 回调:jQuery18208015921225305647_1350479608882 _:1350479608950 响应标头view source 内容长度:353 内容类型:应用程序/json;字符集=utf-8 日期:格林威治标准时间 2012 年 10 月 17 日星期三 13:13:43 服务器:Microsoft-IIS/7.5 X-Powered-By:ASP.NET

我们距离发布还有 1 天,而一些运行良好的东西已经坏了,我这辈子都无法弄清楚是什么。错误可能在 web.config 中,但我在那里有所有正确的标头/端点。

请有人帮忙。谢谢!

【问题讨论】:

  • 你在什么位置得到错误?
  • 它进入错误函数与成功相反。我收到以下响应:错误:jQuery18208741367822512984_1350482142524 was not called parsererror [object Object]
  • 是的,你在什么位置得到解析错误?我假设这是第一个角色,他 DD 已经发布了答案

标签: .net ajax json web-services


【解决方案1】:

似乎远程 API 不再发送 JSONP,而是发送纯 JSON。在有效的 JSONP 调用中,响应必须包含在回调名称中:

jQuery18208015921225305647_1350479608882({"GetOperatorsResult":{"Error":"","Results":[{"City":"Cape Town","IsPublic":true,"Mode":"Bus","Name":"Golden Arrow"},{"City":"Cape Town","IsPublic":true,"Mode":"Shuttle","Name":"Jammie Shuttle"},{"City":"Cape Town","IsPublic":true,"Mode":"Train","Name":"Metrorail"},{"City":"Cape Town","IsPublic":true,"Mode":"Bus","Name":"MyCiti"}],"Status":"Success"}})

您应该联系 API 的所有者或阅读文档以了解如何指定 JSONP 调用。

【讨论】:

  • 我会在服务器端进行哪些更改以防止这种情况发生?
  • 它不在你身边。托管 API 的服务器上发生了一些变化 - http://api.wimt.co.za。
  • 我们找到了!端点绑定指向默认流,而不是 JSON 流,后者启用了跨域脚本访问。感谢您的指点;)
猜你喜欢
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 2014-02-19
  • 2012-11-24
相关资源
最近更新 更多