【发布时间】:2011-05-10 07:12:13
【问题描述】:
我正在尝试跨域使用 JSONP API。这是它返回的数据示例:
photos({"marker":{"@attributes":{"id":"30601","latitude":"52.638061","longitude":"-2.117067","feature":"3","caption":"cat","thumbnailSizes":"60|120|150|180|200|250|300|350|400|400|425|450|500|640"}}});
如何构造一个利用这些数据的 Ajax 调用?我不断收到错误消息。
这是我目前正在尝试的:
$.ajax({
url: pm_url,
data: {},
type: "get",
dataType: "jsonp",
cache: false,
success: function(data) {
console.log(data);
},
error: function() {
alert('Sorry, there was a problem getting the photos!');
}
在 Firebug 中,我可以看到正在检索上面的数据,但随后我看到了错误消息。
请求有什么问题? (或数据 - 虽然它验证为 JSONP。)
更新:
感谢您的建议。我现在正在尝试:
var photos = function (data) {
alert(data);
};
$.ajax({
url: pm_url,
dataType: 'jsonp',
jsonpCallback: 'photos',
});
奇怪的是,这在 Firebug 中调用了两个 URL:
http://myapi.com/file.jsonp?x=1&y=2?callback=?
http://myapi.com/file.jsonp?x=1&y=2?callback=photos&_=1304982373561
第一个 URL 在控制台中显示为错误。我做错了什么?!
API 本身可能是错误的(他们需要 .jsonp 后缀并忽略回调的值,这就是函数名称固定的原因)但我希望我能解决它。
【问题讨论】:
-
在 Firebug/Fiddler 中请求的响应是什么?
-
请求本身是200 OK,返回上面的数据,但是Firebug说:“photos is not a function”。然后我看到错误消息。
-
好的,JSONP 真的很吃力。任何人都可以帮助我让这个 jsFiddle 做某事,只需使用 Twitter JSONP API 吗? jsfiddle.net/R7EPt/8 谢谢!
-
这并不完全使用 JSONP,但它正在工作。希望你能从这里把它带到你需要的地方:jsfiddle.net/R7EPt/9