我大部分时间都在喋喋不休地谈论这个问题而且我只是难倒。
我有一个.NET Web服务,它返回一个JSON序列化响应,并试图用一个可以访问更多数据来序列化的新服务器将其切换出来。两种服务在处理请求的逻辑上看起来都相同。都将ContentType设置为application / json并写入流。
我正在使用jQuery 1.7.1在客户端,我将getJSON与URL一起发送到工作端点。 Firebug显示结果返回,数据充满,并在JSONLint和其他人中验证。我设置了一个.ajaxSetup()来捕获onError事件,我得到了这个:
textStatus: parsererror
Error Thrown: Error: jQuery17109478366139694514_1337880510219 was not called
jqXHR Response Text: undefined
(我格式化了消息)
我正在看的JSON就是一堆:
[
{
"sourceType": "KML",
"dataUrl": "http://firefly.geog.umd.edu/kml/download.php?file=kml_global_modis-hotspots.kml",
"id": "https://example.com/KmlFeeds::KMLFeeds::FIRMS::World",
"title": "FIRMS - World",
"description": "MODIS hotspot / fire and burned area",
"originator": "NASA LANCE",
"spatialDomain": null
},
{
"sourceType": "KML",
"dataUrl": "http://firefly.geog.umd.edu/kml/download.php?file=Alaska_24h.kml",
"id": "https://example.com/KmlFeeds::KMLFeeds::FIRMS::Alaska",
"title": "FIRMS - Alaska",
"description": "MODIS hotspot / fire and burned area",
"originator": "NASA LANCE",
"spatialDomain": null
},
...
]
(spatialDomain有时会有边界框坐标,只是逗号分隔的字符串中的小数)
我的旧网络服务返回相同的几个键不同标记。使用新服务我从来没有得到将所有这些数据发布到网站的回调。它肯定会回到我身边,无论如何我看起来都很有效。
我想认为新服务还有一些东西 - 如果我只是将请求URL切换回原来的,我的客户端工作正常。然而,响应将作为有效的JSON返回,因此我无法弄清楚它是如何进入成功回调的问题。想法?
答案 0 :(得分:2)
看起来jQuery期待一个JSONP Web服务,但服务器没有正确调用JSONP回调。
发布你的getJSON电话。此外,您是否可以发布调用getJSON和Web服务的页面域(必要时将其屏蔽掉),这样我们就可以看到它是否是跨域的。
编辑:看起来它必须是跨域的,因为同一服务器上的不同端口是considered cross-domain。这意味着你想要使用JSONP。问题似乎是您的新服务没有正确提供JSONP(可能它正在提供JSON)。你应该看一下旧的和新的配置差异。