Как следует из названия, я пытаюсь получить json из API, предоставленного сайтом. Сейчас я пробовал разные вещи и получил разные результаты. Я хочу иметь возможность извлекать и анализировать json, чтобы получать от него нужную мне информацию. Вот что я пробовал:
1) Кусок кода $.ajax() (запускается при нажатии кнопки):
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
alert('Success!');
}
});
Это приводит к тому, что «нулевое происхождение не разрешено Access-Control-Allow-Origin». ошибка и не получает ответа от сервера (для Chrome или FF меня не волнует IE, так как это небольшой проект для моего использования). Оглядываясь, я подумал, что проблема может заключаться в том, что мне это нужно jsonp dataType, так как я пытаюсь подключиться к внешнему веб-сайту. Это привело меня к попытке # 2
2) $.ajax с типом данных jsonp
$.ajax({
type: 'GET',
url: url,
dataType: 'jsonp',
success: function(data) {
alert('Success!');
}
});
Я также добавил "& callback =?" до конца «url», который я даю функции. Используя Chrom Dev Tool, на этот раз я вижу ответ сервера, но предупреждение никогда не отображается. Я использовал JSONLINT, чтобы подтвердить, что ответ был правильным json (это так), и я попытался установить json в переменную, чтобы я мог играть с ней (вдоль строк инициализации переменной ранее в теге скрипта [var response; ] и пытаемся присвоить ему json[response = data;]). Это произвело undefined, когда я попытался предупредить (ответ); позже (я не верю, что response=json; бит когда-либо вызывался по какой-то причине).
Я также пытался использовать $.getJSON, но, глядя на API для него, он все равно просто запускает $.ajax (к счастью, я получил те же ответы/ошибки при попытке json vs jsonp для $.getJSON, что и при попытке $.ajax ). Когда я пытаюсь использовать jsonp, Chrome (FF не выдает эту ошибку) показывает «Неожиданная синтаксическая ошибка: неожиданный токен:». Это заставляет меня думать, что на сайте, с которым я пытаюсь поговорить, не работает jsonp и я не могу получить доступ к стороннему сайту как просто запрос json. В ссылке рассказывается о том, как настроить сервер так, чтобы он возвращался как application/json, а не как text/html, как я получаю из своего ответа, исправив для них проблему (но опять же, я пытаюсь получить доступ к стороннему сайту и, таким образом, я могу не получить доступ к серверу).
Я пробовал это в Chrome и FF, просматривал Dev Tools/Firebug для каждого и видел одно и то же (хотя FF не выдает ошибку происхождения, но в любом случае это, по-видимому, ошибка в Chrome).
Кроме того: я взял ответ json и запустил на нем $.parseJSON, и мне удалось получить различные фрагменты, но как я могу получить доступ к json после того, как заработаю $.ajax/$.getJSON?
Буду очень признателен за любые мысли/решения.