gpt4 book ai didi

javascript - 从 Ajax 函数返回值

转载 作者:行者123 更新时间:2023-12-03 10:25:10 26 4
gpt4 key购买 nike

我正在尝试创建一个文本 block ,当文本从 Json 字符串更改时,该文本 block 会自行更新。

基本上我是从以下开始的:

function streamSong(index) {
if (!isUndefined(myPlaylist[index].title))
return myPlaylist[index].title;
else return '';
}

然后将其修改为如下所示:

function streamSong(index) {
var currentSongName = 'here';
if (!isUndefined(myPlaylist[index].title)) {
var intervalFunc = function(){
var jsonData = null;
$.ajax({
url: 'http://www.thesite.com/pullJson.php?stream=rapstation',
dataType: "json",
data: { get_param: 'employees' },
success: function (data) {
currentSongName = 'now here';
},
error: function (data) {
currentSongName = 'not working';
}
});
};
setInterval (intervalFunc, 60000);
setTimeout (intervalFunc, 1);
return currentSongName;
}
else return 'no title';
}

第一个函数正常启动并返回我的流标题。第二个函数启动,但我永远无法修改 currentSongName 的值。

我对 Javascript 和 ajax 还是有点陌生​​,所以请原谅我的无知,但我显然希望最终将 currentSongName 的值设置为我检索到的 Json 值,但现在我只希望它能够更改值在计时器上。

我的做法是错的吗?

最佳答案

变量修改得很好,但为时已晚。 AJAX 调用是异步的,因此变量用于在将值分配给它之前返回值。

您将使用回调来处理结果。使用原始代码,它看起来像这样:

function streamSong(index, callback) {
if (!isUndefined(myPlaylist[index].title)) {
callback(myPlaylist[index].title);
} else {
callback('');
}
}

用法:

streamSong(42, function(title) {
// do what you want with the title
});

对于 AJAX 调用,回调将像这样使用:

function streamSong(index, callback) {
var currentSongName = 'here';
if (!isUndefined(myPlaylist[index].title)) {
var intervalFunc = function(){
var jsonData = null;
$.ajax({
url: 'http://www.thesite.com/pullJson.php?stream=rapstation',
dataType: "json",
data: { get_param: 'employees' },
success: function (data) {
callback('now here');
},
error: function (data) {
callback('not working');
}
});
};
setInterval (intervalFunc, 60000);
setTimeout (intervalFunc, 1);
} else {
callback('no title');
}
}

关于javascript - 从 Ajax 函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com