JQuery函数返回变量“undefined”

时间:2013-08-14 04:45:45

标签: jquery function

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

然而,当我更换“返回单词”时用“警报(单词);” - 它确实向我显示了随机词。

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

2 个答案:

答案 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);
}