jQuery JSONP调用为其他站点工作,但不是我的

时间:2011-06-18 18:37:21

标签: jquery jsonp bookmarklet

我正在开发一个小书签,因此需要通过JSONP来回调我的网站,以解决跨域限制问题。我在下面添加了几个演示,以便您可以看到我正在谈论的内容。

我已经掌握了一切,并在Twitter的网站上提供了一个JSON源(我的书签与Twitter无关,只是我可以使用他们的JSON数据让它工作)。但是,我似乎无法使用来自我的服务器的JSON。

为了简单起见,我从Twitter的JSON调用中获取了我收到的确切响应,并将其放入我自己服务器上的JSON文件中。即使通过调用确切的JSON数据,当JSON来自我的服务器时,它也无法加载。

鉴于此,我似乎已经排除了:不正确的JSON和我的JavaScript / jQuery代码(再次,当它来自其他地方时工作)。

这让我觉得我的服务器回传jQuery不喜欢的JSON文件的方式有所不同。我已经检查过,来自我服务器的JSON设置了适当的内容类型(“application / json”)。

以下是一些示例,以便您可以准确地看到我所看到的内容。有没有人有任何想法?

再次强调,下面的两个示例是相同的代码,只是从不同的地方调用相同的JSON结果。在这里把头撞在墙上。

感谢您提供任何帮助或建议。

工作演示:

http://www.hallsnet.com/temp/working.htm (请参阅/temp/working.js获取JavaScript源代码)

非工作演示:

http://www.hallsnet.com/temp/not-working.htm (请参阅/temp/not-working.js获取JavaScript源代码)

1 个答案:

答案 0 :(得分:1)

你的json文件没有调用任何函数,而jQuery期望你的json根据jQuery分配给它的名称动态调用一个函数(当你在url中使用callback=?时)。

如果查看twitter json文件,它会根据url中的callback参数设置的函数将数据添加到函数名中,例如callback=asd将调用json文件中的数据功能名称asd

http://twitter.com/status/user_timeline/smith.json?count=10&callback=asd

asd([{"geo":null,"use...等......

在你的json文件中:

http://www.hallsnet.com/temp/not-working.json?callback=saddas32

你没有将数据包装在任何函数回调中(并且jQuery正在动态创建这些,因为你还没有指定要使用的静态),所以json文件实际上并没有调用任何函数,而jQuery只是在等待它无休止地这样做。