0

我大部分时间都在努力解决这个问题,我只是被难住了。

我有一个.NET web 服务,它返回一个 JSON 序列化响应,并试图用一个可以访问更多数据进行序列化的新服务来切换它。就处理请求的逻辑而言,这两个服务看起来都是一样的。都将 ContentType 设置为 application/json 并写入流。

我在客户端使用 jQuery 1.7.1,我将带有 URL 的 getJSON 发送到工作端点。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 有时有边界框坐标,字符串中只有逗号分隔的小数)

我的旧 Web 服务返回相同的内容,但有几个不同标签的键。使用新服务,我永远不会收到将所有这些数据发布到网站的回调。它肯定会回到我身边,无论如何我看起来都是有效的。

我想认为新服务有些问题 - 如果我只是将请求 URL 切换回旧的,我的客户就可以正常工作。但是响应作为有效的 JSON 返回,所以我无法弄清楚它是如何在进入成功回调时遇到问题的。想法?

4

1 回答 1

2

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

发布您的 getJSON 调用。此外,您能否发布调用 getJSON 和 Web 服务的页面的域(如有必要,将它们屏蔽掉),以便我们查看它是否是跨域的。

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

于 2012-05-24T19:37:12.350 回答