我有一个从位于系统上的XML文件中提取信息的函数。然后,IT将提取该文件中的值并将它们放入数组中。一旦调用该函数,值就会进入数组,但是一旦函数结束,值就会消失。
function getXML(location,day){
$(document).ready(function () {
$.ajax({
type:'post', //just for ECHO
dataType: "xml", // type of file you are trying to read
crossDomain:true,
url: './../CurrentFiles/'+ location +'.xml', // name of file you want to parse
success: function (xmldata){
if(array[0] == null){
$(xmldata).find('dgauges').children().each(function(){
array.push($(this).text());
});
}
}, // name of the function to call upon success
error: function(xhr, status, error) {
console.log(error);
console.log(status);
}
});
});
return array[day];
}
从我研究的内容来看,这可能是异步的问题,但我完全不明白它是什么。 另外我对jquery很新,所以如果有什么东西看起来不合适那就是原因。
这是我对此功能的计划
我有一个格式为
的XML文件<dgages><d>26.850</d><d-1>7.70</d-1><d-2>2.00</d-2><d-3>27.90</d-3></dgages>
我试图在数组中提取所有这些值,以便我可以对它们进行一些计算。
答案 0 :(得分:0)
尝试进行同步通话。默认情况下,AJAX调用是异步的,这意味着代码将在等待上一行的结果之前跳转到下一行。您可以通过告知AJAX调用以同步方式执行结果来强制执行结果:
function getXML(location, day) {
var array = [];
$.ajax({
type: 'post', //just for ECHO
dataType: "xml", // type of file you are trying to read
crossDomain: true,
async: false, // Wait until AJAX call is completed
url: './../CurrentFiles/' + location + '.xml', // name of file you want to parse
success: function(xmldata) {
if (array[0] == null) {
$(xmldata).find('dgauges').children().each(function() {
array.push($(this).text());
});
}
}, // name of the function to call upon success
error: function(xhr, status, error) {
console.log(error);
console.log(status);
}
});
return array[day];
}