首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从外部JSON文件获取文件内容

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

Stack Overflow用户
提问于 2015-04-18 16:48:42
回答 2查看 182关注 0票数 0

我正在尝试从外部JSON文件中获取文件内容,但是我总是在警报中获得null。

JS:

代码语言:javascript
复制
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);
}

外部文件:

代码语言:javascript
复制
var data = [
  ["a", "word 1"],
  ["e", "word 2"],
  ["i", "word 3"],
  ["o", "word 4"],
  ["u", "word 5"]
]

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

更新:

代码语言:javascript
复制
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);
 }

仍然得到空值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-18 16:56:59

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

代码语言:javascript
复制
 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
EN

Stack Overflow用户

发布于 2015-04-18 17:27:25

您要加载的文件不是JSON格式的,它的javascript代码。删除var =语句,一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29720104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档