繁体   English   中英

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

[英]GET file content from external JSON file

我正在尝试从外部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 ),所以这可能行不通。

您尝试加载的文件不是JSON格式,而是javascript代码。 删除var =语句,一切都会正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM