使用jQuery返回XML文件内容
问题描述:
我想使用JavaScript/jQuery读取本地文件的内容。我知道这经常被讨论,但我的例子有点不同,因为我想在完成获取操作后返回内容而不是操作HTML。使用jQuery返回XML文件内容
我不想谈论安全问题和本地文件,因为此代码旨在在我自己的浏览器(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,即使我在本地执行此操作。
答
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;
}
希望有所帮助。
这里的问题是readData没有返回任何值,你的成功函数是。我不确定它可以用ajax /回调模型的结构来做到这一点 –