Почему этот запрос jQuery Ajax не выполняется? - PullRequest
2 голосов
/ 09 сентября 2010

Недавно FCC предоставил небольшой набор вызовов API для доступа к данным FCC .В частности, меня интересует API потребительского широкополосного тестирования .Я пытаюсь получить доступ к этому API через JQuery, но мне не удается.Пожалуйста, дайте мне знать, если я делаю что-то не так с моим кодом или если это похоже на проблему с API FCC.

Если вы посещаете этот запрос API в браузере, он прекрасно возвращает ответ XML:http://data.fcc.gov/api/speedtest/find?latitude=30.240236062827297&longitude=-97.64787337499999

Итак, я попытался загрузить эти данные в jQuery, используя различные методы:

var url = "http://data.fcc.gov/api/speedtest/find?latitude=30.240236062827297&longitude=-97.64787337499999";

$.ajax({
    type: "GET",
    url: url,
    success: function(data) {
        console.log("ajax: " + data);
    }
});

$.getJSON(url, function(data) {
    console.log("getJSON: " + data);
});

$.get(url, function(data) {
    console.log("get: " + data);
});

В консоли Firebug все три запроса показывают статус 200 (ОК), нотело ответа пусто.Кроме того, в результате появляются console.log сообщения:

ajax: 
getJSON: null
get: 

Я что-то здесь не так делаю?

Ответы [ 2 ]

4 голосов
/ 09 сентября 2010

Чтобы обойти ту же Политику происхождения, вам нужно использовать JSONP. Поддерживается API. Добавьте callback=? к строке URL в вашем .getJSON() вызове:

Если URL содержит строку "Обратный вызов =?" в URL запрос вместо этого обрабатывается как JSONP. Увидеть обсуждение типа данных JSONP в $ .ajax () для более подробной информации.

Итак, как-то так:

var url = "http://data.fcc.gov/api/speedtest/find?...&callback=?";
$.getJSON(url, function(data) {
  // do stuff
});

Ссылки: http://api.jquery.com/jQuery.getJSON/

3 голосов
/ 09 сентября 2010

Вы не можете совершать междоменные звонки, используя AJAX.Это не работает так.

То, что вы, вероятно, хотите сделать, - это чтобы ваш URL-адрес AJAX-запроса был локальным сценарием на вашем собственном сервере, а затем запустить этот сценарий для запроса URL-адреса API (с использованием cURL или чего-то еще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...