没有达到jQuery.getJSON回调

时间:2012-05-24 19:34:45

标签: jquery .net json web-services jsonp

我大部分时间都在喋喋不休地谈论这个问题而且我只是难倒。

我有一个.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返回,因此我无法弄清楚它是如何进入成功回调的问题。想法?

1 个答案:

答案 0 :(得分:2)

看起来jQuery期待一个JSONP Web服务,但服务器没有正确调用JSONP回调。

发布你的getJSON电话。此外,您是否可以发布调用getJSON和Web服务的页面域(必要时将其屏蔽掉),这样我们就可以看到它是否是跨域的。

编辑:看起来它必须是跨域的,因为同一服务器上的不同端口是considered cross-domain。这意味着你想要使用JSONP。问题似乎是您的新服务没有正确提供JSONP(可能它正在提供JSON)。你应该看一下旧的和新的配置差异。