1

我正在尝试使用 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;
    });
}

但是,当我替换“return word;”时 带有“警报(单词);” - 它确实向我展示了随机词。

知道如何解决这个问题吗?

4

2 回答 2

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;
}
于 2013-08-14T04:51:43.747 回答
1

这里的问题是$.get异步返回数据——这意味着它可以立即发生,但可能不会。

正确的答案在于 JavaScript callbacks。我会让你用谷歌搜索,但你可以从这里开始

那,或者你可以在RandomWord()函数中用你的单词做任何你需要做的事情:

console.log(word);

...或者您可以调用另一个函数:

workWithRandomWord(word);

function workWithRandomWord(word) {
    console.log(word);
}
于 2013-08-14T04:58:54.303 回答