Может ли WikiMedia API возвращать неверный JSON? - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть такой результат:

["asd",
  ["Asda","ASDIC","ASD","AsDB","Asdr\u00fabal Cabrera","Asdhoo","\u00c1sd\u00eds Hj\u00e1lmsd\u00f3ttir","Asdr\u00fabal Fontes Bayardo","ASD CF Bardolino Verona","ASD Fiammamonza"]
]

Получено из http://en.wikipedia.org/w/api.php?&search=asd&action=opensearch&format=json

Когда я использую метод jJuery getJson, он не может проанализировать JSON выше.Почему?

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

@ прав Джейк Кларксон

Я думаю, что это лучший способ сделать это:

        function onSuccess(data) {
            alert(data);
        }

        function onError(data) {
            alert(data);
        }

        $.ajax({
            url:"http://en.wikipedia.org/w/api.php",
            dataType: 'jsonp',
            jsonp: 'callback',
            timeout: 5000,
            data: 'search=asd&action=opensearch',
            success: onSuccess,
            error: onError
        });
1 голос
/ 01 февраля 2012

Вызов URL-адреса в том виде, в котором вы его написали, используя jQuery.getJSON(), приведет к ошибке из-за той же политики происхождения, которая была упомянута svick в комментарии выше.

Что вам нужно сделать, это добавить &callback=? к вашему URL. Это заставит jQuery использовать JSONP . См. Раздел JSONP http://api.jquery.com/jQuery.getJSON/. Следующее должно работать:

$.getJSON("http://en.wikipedia.org/w/api.php?&search=asd&action=opensearch&format=json&callback=?", function (data) {
    console.log(data);
});
...