首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法从jquery ajax函数返回JSON变量

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

Stack Overflow用户
提问于 2012-03-12 17:54:43
回答 1查看 848关注 0票数 0

我有以下功能:

代码语言:javascript
复制
    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播放器所需要的代码...

代码语言:javascript
复制
var playlist = get_playlist(); 
var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options); 
myPlaylist.shuffle(true, true);

感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-12 17:57:05

这就是AJAX的工作方式(异步)。success事件处理程序外部的console.log语句是在返回响应之前执行的(因此还没有为window.response分配任何内容)。将依赖于AJAX响应的代码放在success事件处理程序中。

或者,您可以使请求同步,但这通常不是您想要的,因为它可以锁定浏览器,直到返回响应。

更新(请参阅评论和编辑以提出问题)

正如我前面提到的,您需要将所有依赖于AJAX响应的代码放在就绪事件处理程序中:

代码语言:javascript
复制
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);
        }               
    });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9664888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档