Javascript 将变量设置为ajax输出,该变量仅在调用时更改
我有一台收音机,正在制作剧本的最后一首歌。我想做的是: 从我的外部php脚本中获取url,播放歌曲,在歌曲末尾通过调用函数设置一个全局变量=当前url,当url更改时,全局变量保持不变,直到再次调用该函数并使用当前歌曲进行更新 目前,我所有的尝试都返回一个未定义或未捕获的TypeError:在下面的示例中,无法将属性“innerHTML”设置为nullJavascript 将变量设置为ajax输出,该变量仅在调用时更改,javascript,ajax,variables,Javascript,Ajax,Variables,我有一台收音机,正在制作剧本的最后一首歌。我想做的是: 从我的外部php脚本中获取url,播放歌曲,在歌曲末尾通过调用函数设置一个全局变量=当前url,当url更改时,全局变量保持不变,直到再次调用该函数并使用当前歌曲进行更新 目前,我所有的尝试都返回一个未定义或未捕获的TypeError:在下面的示例中,无法将属性“innerHTML”设置为null var data = $.ajax({ url: '../scripts/radio.php', data: { attr1: 'value1'
var data = $.ajax({
url: '../scripts/radio.php',
data: {
attr1: 'value1'
},
success: function(data) {
console.log(data);
}
});
function playFirst(){
var lastSong = data;
document.getElementById("songName").innerHTML = data;
fileChosen = true;
setupAudioNodes();
var request = new XMLHttpRequest();
request.addEventListener("progress", updateProgress);
request.addEventListener("load", transferComplete);
request.addEventListener("error", transferFailed);
request.addEventListener("abort", transferCanceled);
request.open('GET', data, true);
request.responseType = 'arraybuffer';
// When loaded decode the data
request.onload = function() {
$("#title").html("Infinite");
$("#album").html("Infinite");
$("#artist").html("");
onWindowResize();
$("#title, #artist, #album").css("visibility", "visible");
// decode the data
context.decodeAudioData(request.response, function(buffer) {
// when the audio is decoded play the sound
sourceNode.buffer = buffer;
sourceNode.start(0);
$("#freq, body").addClass("animateHue");
//on error
}, function(e) {
console.log(e);
});
};
request.send();
};
在成功回调中返回数据。由于尚未存储返回的数据,因此在调用playFirst时,返回的数据仍未定义 您可以将返回的数据存储在全局变量中,如下所示:
let data;
$.ajax({
url: '../scripts/radio.php',
data: {
attr1: 'value1'
},
success: function(returnData) {
data = returnData;
console.log(data);
}
});
或者在成功回调中调用playFirst:
$.ajax({
url: '../scripts/radio.php',
data: {
attr1: 'value1'
},
success: function(data) {
playFirst(data);
}
});