我尝试从wikilocation.org获取数据。据我所知,我需要使用jsonp来管理它。这基本上适用于此代码:
$.ajax({
url:'http://api.wikilocation.org/articles',
dataType: "jsonp",
cache: false,
jsonp:'onJsonPLoad',
jsonpcallbackString: "addPoi",
data: {'lng': newPoi.lon, 'lat': newPoi.lat, 'limit':5, 'radius':100, 'jsonp':'addPoi'}
});
我的问题是,我不想调用另一个函数(代码段中的addPoi)来处理结果。我将结果直接放在函数中,我在那里进行ajax调用。那可能吗?我错过了什么吗?
答案 0 :(得分:2)
这将有效:Example
$.ajax({
url: 'http://api.wikilocation.org/articles',
dataType: "jsonp",
jsonpCallback: 'addPoi',
cache: false,
success: function(data) {
alert(data)
},
data: {
'lng': newPoi.lon,
'lat': newPoi.lat,
'limit': 5,
'radius': 100,
'jsonp': 'addPoi'
}
});
你必须向wikilocation发送一个函数名,并告诉jQuery你的期望是什么。然后你需要做的就是添加success: function (data) { ... }
答案 1 :(得分:1)
使用jQuery通过JSONP访问WikiLocation的一种更简单的方法是使用$ .getJSON功能以及jsonp回调参数:
$.getJSON("http://api.wikilocation.org/articles?lat=51.500688&lng=-0.124411&limit=1&format=json&jsonp=?", function(data) {
// do what ever you want with the returned data
console.log(data);
});
来自jQuery文档:
从jQuery 1.2开始,如果指定了JSONP回调,则可以加载位于另一个域上的JSON数据。 回调的形式为“example.com?callback=?”。 jQuery自动替换'?'使用随机方法名称不与全局范围冲突。您不必自己指定方法名称。
请注意,您尝试呼叫的网站需要支持JSON-P输出。回调参数可能因API而异,例如Yahoo Pipes需要“_callback =?”
请记住,此函数之后的行将在回调之前执行。
来自WikiLocation文档:
jsonp(可选) - 如果您使用的是'json'格式,则可以选择通过此参数提供JSONP回调。这将导致输出被包装在回调函数(您提供的名称作为参数值)内,以供跨域使用。
感谢您使用WikiLocation - 我构建了它;)