使用jQuery从Wikilocation获取数据

时间:2011-08-20 16:02:57

标签: jquery ajax jsonp fetch

我尝试从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调用。那可能吗?我错过了什么吗?

2 个答案:

答案 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 - 我构建了它;)