Извлекать данные из Wikilocation с помощью jQuery - PullRequest
0 голосов
/ 20 августа 2011

Я пытаюсь получить данные с 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 ]

2 голосов
/ 20 августа 2011

Это будет работать: Пример

$.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'
    }
});

Вы должны отправить вики-файлу имя функции и сообщить jQuery, чего ожидать, как вы.Тогда все, что вам нужно было сделать, это добавить success: function (data) { ... }

1 голос
/ 26 августа 2011

Более простой способ доступа к WikiLocation через JSONP с помощью jQuery - использовать функцию $ .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, вы можете загружать данные JSON, расположенные в другом домене, если вы укажете обратный вызов JSONP. Обратный вызов принимает форму "example.com?callback=?". JQuery автоматически заменяет «?» со случайным именем метода, которое не конфликтует с глобальной областью действия. Вам не нужно указывать имя метода самостоятельно.

Обратите внимание, что сайт, который вы пытаетесь вызвать, должен поддерживать вывод JSON-P. Параметр обратного вызова может варьироваться в зависимости от API, например, Yahoo Pipes требует "_callback =?"

Имейте в виду, что строки после этой функции будут выполняться до обратного вызова.

А из документов WikiLocation:

jsonp (необязательно) - если вы используете формат 'json', вы можете указать обратный вызов JSONP через этот параметр. Это приведет к тому, что выходные данные будут заключены в функцию обратного вызова (имя которой вы указываете в качестве значения параметра) для использования в междоменных областях.

Спасибо за использование WikiLocation - я его построил;)

...