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

时间:2015-04-18 16:48:42

标签: 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);
 }

仍然获得空值。

2 个答案:

答案 0 :(得分:1)

您忘记将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)的选项

答案 1 :(得分:0)

您尝试加载的文件不是JSON格式,即其javascript代码。删除var =语句,一切都应该没问题。