Я не могу вернуть переменную JSON из функции jquery ajax - PullRequest
0 голосов
/ 12 марта 2012

У меня есть функция:

    function get_playlist(){    

        var result = jQuery.ajax({
            url: '<?php echo admin_url('admin-ajax.php'); ?>',
            type: 'post',
            dataType: 'json',
            data: {
                action: 'getrandommp3',
                nonce:'<?php echo wp_create_nonce( 'randmp3' ); ?>'
            },
            success: function(response) {
                console.log(response); // All OK!
                window.response = response;
                var customvar = response;
                return response;
            }               
        });
        console.log(window.response); // undefined
        console.log(result.responseText); //undefined
        console.log(customvar); //undefined
        return window.response; // returning undefined
    }

Мне нужно вернуть переменную json из функции.Внутри success: function(response) { Response необходим контент.Но за пределами Jquery.ajax у меня проблемы ...

Этот код нужен для jquery mp3-плеера ...

var playlist = get_playlist(); 
var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options); 
myPlaylist.shuffle(true, true);

Спасибо за помощь!

1 Ответ

2 голосов
/ 12 марта 2012

Так работает AJAX (асинхронно). Операторы console.log вне обработчика событий success выполняются до того, как ответ будет возвращен (поэтому ничего не было присвоено window.response). Поместите код, основанный на ответе AJAX, в обработчик событий success.

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

Обновление (см. Комментарии и редактирование к вопросу)

Как я упоминал ранее, вам нужно поместить весь код, основанный на ответе AJAX, в готовый обработчик событий:

function get_playlist(){    
    var result = jQuery.ajax({
        //Other AJAX options removed
        success: function(response) {
            var myPlaylist = new jPlayerPlaylist(cssSelector, response, options); 
            myPlaylist.shuffle(true, true);
        }               
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...