jQuery: получить Ajax в переменную? - PullRequest
0 голосов
/ 05 января 2011

Я думал, что показанный ниже код будет работать как шарм, но, видимо, это не так. Я не могу сказать, почему он не работает - URL-адрес получен правильно (проверено с помощью firebug), но он отказывается сохранить результат в моей переменной (globalVar).

Что я могу сделать?

var globalVar;  

function fetchDataset(kategori){  

    $.getJSON(apiUrl + "?jsoncallback=?", function(json){
        globalVar = json;

        console.log(globalVar); // Returns Undefined!
    });


}

Ответы [ 4 ]

0 голосов
/ 05 января 2011

Очевидно, ничего не получалось, поэтому я вместо этого закончил делать прокси на основе PHP, который туннелирует любые междоменные запросы.После изменения URL-адреса прокси-сервера PHP он работал отлично.

Спасибо за помощь всем.Очень ценится!

0 голосов
/ 05 января 2011

Ваша переменная не является глобальной.Вы определили его в рамках функции.Ваш Ajax-вызов выполняется асинхронно, что означает, что ваша функция завершится (вероятно) до того, как будет возвращен Ajax-запрос.Попробуйте объявить globalVar вне функции.то есть.

var globalVar;    
function fetchDataset(kategori){

Редактировать: Кроме того, проверьте statusText (вторая переменная, переданная в функцию обратного вызова), чтобы убедиться, что в вашем запросе нет ошибок.

0 голосов
/ 05 января 2011

Вы делаете междоменный запрос?

Если это так, убедитесь, что вы используете jsonp

JSONP Если URL содержит строку «callback =?»(или аналогичный, как определено серверным API), запрос обрабатывается как JSONP.См. Обсуждение типа данных jsonp в $ .ajax () для более подробной информации.

Здесь приведен пример jsonp.http://api.jquery.com/jQuery.getJSON/

0 голосов
/ 05 января 2011

Полагаю, firebug должен отображать содержимое вашего обратного вызова. У меня была похожая проблема, и я решил ее с помощью .parseJSON ();

http://api.jquery.com/jQuery.parseJSON/

Может быть, это поможет.

Является ли обратный вызов аккуратно отформатированным / "правильным" json?

...