我正在尝试使用JQuery从字典文件中获取一个随机单词 - 但我无法“返回”该值。返回的值始终为“未定义”。
function RandomWord()
{
$.get('dictionary.txt', function(data) {
var words = data.split("\n");
var idx = Math.floor(words.length * Math.random());
word = words[idx];
return word;
});
}
然而,当我更换“返回单词”时用“警报(单词);” - 它确实向我显示了随机词。
知道如何解决这个问题吗?
答案 0 :(得分:2)
由于它是$.get()
,因此它是一个AJAX GET请求。当异步接收响应时调用该函数,因此我猜你不能从回调中返回。您可以将它分配给这样的元素:
$('#sample-elem').html(word);
否则你可以在AJAX调用之外声明“word”并将结果分配给它并执行async:false就像这样
function RandomWord()
{
var word;
$.get(
url: 'dictionary.txt',
async: false,
`` success: function(data) {
var words = data.split("\n");
var idx = Math.floor(words.length * Math.random());
word = words[idx];
});
return word;
}
答案 1 :(得分:1)
这里的问题是$.get
异步返回数据 - 这意味着它可能会立即发生,但可能不会发生。
正确的答案在于JavaScript callbacks
。我会告诉你谷歌,但你可以start here作为入门书。
那,或你可以在RandomWord()
函数中对你的单词做任何你需要做的事情:
console.log(word);
... 或你可以调用另一个函数:
workWithRandomWord(word);
function workWithRandomWord(word) {
console.log(word);
}