我想使用JavaScript / jQuery读取本地文件的内容。我理解这经常被讨论,但我的例子有点不同,因为我想在完成提取后返回内容而不是操纵HTML。
我不想谈论安全问题和本地文件,因为这段代码是在我自己的浏览器中运行的(Chrome,我从--allow-file-access-from-files标志开始)。
我有以下功能来获取数据......
function readData() {
$.ajax({
type: "GET",
url: "data.xml",
async: false, // this does not change the outcome
dataType: "xml",
success: function(xml) {
// Got the data, find entries and return them.
console.log("Returning data");
var doc = $(xml).find('entry');
// This is where most examples manipulate dom, I want to
// return the data instead
return doc;
}
});
}
现在我想做...
var xmlDoc = readData();
// undefined, why?
并将文档放在变量中。相反,我得到了不确定。似乎函数在获取文件之前返回。或者我可能有变量范围的问题?
有谁知道如何做到这一点?是的,我确信我想使用JavaScript,即使我在本地这样做。
答案 0 :(得分:1)
stackoverflow answer regarding handling of $.ajax calls有一个很好的例子可以使用它。可以稍微修改此示例,以便为您提供接近您要查找的内容。
function xhr_get(url) {
return $.ajax({
url: url,
type: 'get',
dataType: 'xml',
beforeSend: showLoadingImgFn
})
.always(function() {
// remove loading image maybe
})
.fail(function() {
// handle request failures
});
}
植入上述方法的例子是:
xhr_get('/index').done(function(data) {
// do stuff with index data
});
xhr_get('/id').done(function(data) {
// do stuff with id data
});
您可能需要以下内容:
function readData() {
var returnData;
xhr_get('data.xml').done(function(data) {
returnData = data;
});
return returnData;
}
希望有所帮助。