Успешный обратный вызов jQuery ajax не срабатывает

Я использую метод jQuery $.ajaxдля извлечения данных из веб-службы, совместимой с JSONP, и что касается получения ответа и отображения полученных данных в моем HTML, все кажется работать нормально. Однако мне не удалось запустить обратный вызов метода ajax. Что еще более странно, так это то, что даже когда я получаю действительный ответ от службы, обратный вызов ошибки всегда запускается.

Вот пример простой js-функции, которую я сделал, чтобы проверить это:

function doJsonp()
{
    $.ajax({
        url: "http://example.com/api/service?callback=blah",
        dataType: "jsonp",
        crossDomain: true,
        success: function() { console.log("success"); }, // This is never fired
        error: function() { console.log("error"); } // This is always fired
    });
}

и соответствующая функция обратного вызова:

function blah(data)
{
    console.log(data); // This is called properly
}

Из чтения подобных вопросов здесь, в SO и в других местах, кажется, что это чаще всего вызвано сервис, возвращающий JSON, который не проходит проверку. Для своих целей я использую собственный веб-сервис, но пробовал и другие сервисы JSONP, такие как сервисы Flickr, например:

http://api.flickr.com/services/feeds/groups_pool .gne?id=807213@N20&lang=en-us&format=json&jsoncallback=blah

И JSON из сервиса Flickr, и мой проверяют с помощью jsonlint, так что, насколько я могу судить, проблема не в этом.

В поисках решения этой проблемы я попытался использовать подключаемый модуль jQuery под названием jquery-jsonp, который можно найти по адресу http://code.google.com/p/jquery-jsonp/. Это заменяет вызов jQuery $.ajaxсобственным $.jsonp, поэтому приведенный выше код выглядит так:

function doJsonp()
{
    $.jsonp({
        url: "http://example.com/api/service?callback=blah",
        success: function() { console.log("success"); },
        error: function() { console.log("error"); }
    });
}

Однако результат тот же, и обратный вызов успеха никогда не срабатывает. Любая помощь или толчок в правильном направлении будет принята с благодарностью!

10
задан Limescale 23 April 2012 в 12:02
поделиться