我正在尝试从外部 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/