我有以下功能:
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);感谢您的帮助!
发布于 2012-03-12 17:57:05
这就是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);
}
});
}https://stackoverflow.com/questions/9664888
复制相似问题