我正在尝试从外部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);
}仍然得到空值。
发布于 2015-04-18 16:56:59
您忘记将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),所以这可能无法工作。
发布于 2015-04-18 17:27:25
您要加载的文件不是JSON格式的,它的javascript代码。删除var =语句,一切都会好起来的。
https://stackoverflow.com/questions/29720104
复制相似问题