Документация $.getJSON()
гласит:
Если указанный URL-адрес находится на удаленном сервере, запрос обрабатывается как JSONP. См. Обсуждение типа данных jsonp
в $ .ajax () для более подробной информации.
Документация $.ajax()
для состояний типа jsonp
(выделение моя):
Загрузка в блок JSON с использованием JSONP. Добавит дополнительный "? Callback =?" в конце вашего URL укажите обратный вызов .
Похоже, что если я позвоню на $.getJSON()
с междоменного URL, дополнительный "callback =?" Параметр должен автоматически добавляться. (Другие части документации поддерживают эту интерпретацию.)
Однако я не вижу такого поведения. Если я не добавлю "callback =?" явно, jQuery неправильно создает XMLHttpRequest (который возвращает нулевые данные, так как я не могу прочитать междоменный ответ). Если я добавлю его явно, jQuery правильно сделает запрос .
Вот пример:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.getJSON(URL, alertResponse);
// alerts "data: null, status: success"
$.getJSON(URL + "&callback=?", alertResponse);
// alerts "data: [object Object], status: undefined"
Так что происходит? Я неправильно понимаю документацию или что-то забыл?
Само собой разумеется, что это не так уж и сложно, но я создаю веб-API и специально установил параметр обратного вызова на «обратный вызов» в надежде приспособить его для использования jQuery.
Спасибо!
(Изменить: я опубликовал это на форумах jQuery, если вам интересно.)