javascript - 从外部 JSON 文件获取文件内容

标签 javascript jquery arrays ajax json

我正在尝试从外部 JSON 文件获取文件内容,但我一直在警报中收到 null。

JS:

function getText() {
    var result = null;
    var file = 'file.json';
    $.ajax({
        type: 'get',
        data: 'data',
        dataType: 'json',
        async: false,
        success: function() {
            var ranData = data[Math.floor(Math.random() * data.length)];
            result = ranData;
        }
    });
    alert(result);
}

外部文件:

var data = [
  ["a", "word 1"],
  ["e", "word 2"],
  ["i", "word 3"],
  ["o", "word 4"],
  ["u", "word 5"]
]

当我在同一文件中使用 data 数组时,它工作正常。我在做什么?任何帮助将不胜感激!

更新:

function readFiles() {
        var result = null;
        var file = 'dictionary.js';
        $.ajax({
            url: file,
            type: 'get',
            data: 'data',
            dataType: 'script',
            async: false,
            success: function(data) {
                var randomData = data[Math.floor(Math.random() * data.length)];
                result = randomData;
            }
        });
        alert(result);
 }

仍然得到空值。

最佳答案

您忘记将 data 参数传递给成功回调函数,而且您还忘记设置请求发送到的 url 参数:

 function getText() {
    var result = null;
    $.ajax({
        urL: 'file.json',
        type: 'GET',
        data: 'data',
        dataType: 'json',
        async: false,
        success: function(data) {
            var ranData = data[Math.floor(Math.random() * data.length)];
            result = ranData;
        }
    });
    alert(result);
}

还有一件事。您确实不应该在 ajax 中使用 async:false 因为同步 ajax 会完全卡住浏览器,直到 ajax 请求完成。您应该在成功回调中处理数据。我还注意到,在您的成功回调中,您正在检查数组长度 data.length ,这可能行不通,因为您希望以 JSON 格式从服务器获取数据(您设置dataType 选项到 json)

关于javascript - 从外部 JSON 文件获取文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29720104/

相关文章:

javascript - JS/HTML 嵌套引号的语法问题

javascript - 使用 jQuery、AJAX 和 PHP 单击复选框时更新 MySQL 字段

c - 创建链表时遇到问题

arrays - 数组中第 K 个最小的元素

javascript - 比较 jquery timepicker 值

javascript - 当 Ember 模板更改时运行 jQuery

javascript - JavaScript cookie 中的 LIFO

Java - 如何查看一个字符是否与多个字符匹配?

javascript - UTC 日期转换为本地日期不起作用,Safari

javascript - 如何使 JAVASCRIPT 变量等于 HTML 属性?