我开发了一个使用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“:”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”}], “状态”: “成功”}}
以下是网络审核:
请求网址:http://api.wimt.co.za/v1/json/public.svc/getoperators?appKey = EB478338-73C7-483F-8AB4-B4DE2219D4DC& callback = jQuery18208015921225305647_1350479608882& _ = 1350479608950 请求方法:GET 状态代码:200 OK 请求Headersview源 接受: / 接收字符集:ISO-8859-1,utf-8; Q = 0.7,*; Q = 0.3 接受编码:gzip,放气,SDCH 接受语言:EN-US,EN; Q = 0.8 缓存控制:最大年龄= 0 连接:保持活跃 主持人:api.wimt.co.za 引用站点:HTTP://本地主机:8300 / index.html的 User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.4(KHTML,与Gecko一样)Chrome / 22.0.1229.94 Safari / 537.4 查询字符串Parametersview URL编码 APPKEY:EB478338-73C7-483F-8AB4-B4DE2219D4DC 回调:jQuery18208015921225305647_1350479608882 _:1350479608950 响应标题来源 内容长度:353 内容类型:应用/ JSON;字符集= utf-8的 日期:2012年10月17日星期三格林尼治标准时间13:13:43 服务器:Microsoft-IIS / 7.5 X供电-通过:ASP.NET
我们在发布前一天,一些完美的工作已经破碎了,我不能为我的生活找到解决办法。错误可能在web.config中,但我有所有正确的标头/端点。
有人请帮忙。谢谢!
答案 0 :(得分:2)
远程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呼叫。