我无法从jquery ajax函数返回JSON变量



我有函数:

    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) {内部响应有需要的内容。但在Jquery.ajax之外,我有问题。。。

jquery mp3播放器需要这个代码。。。

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

谢谢你的帮助!

这是AJAX的工作方式(异步)。success事件处理程序之外的console.log语句在返回响应之前执行(因此尚未向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);
        }               
    });
}

相关内容

  • 没有找到相关文章

最新更新