Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 最后运行AJAX函数,如何使其首先运行_Javascript_Jquery_Ajax_Xml - Fatal编程技术网

Javascript 最后运行AJAX函数,如何使其首先运行

Javascript 最后运行AJAX函数,如何使其首先运行,javascript,jquery,ajax,xml,Javascript,Jquery,Ajax,Xml,我有一个带有AJAX调用的函数(以下代码): 这段代码运行良好,但问题是它在所有函数完成后运行。我想先运行这段代码,我需要从XML中获取数据。我需要停止$(xml).find('pub').each(function()的循环,只要Name=$(this).find('pro').text()文本匹配,每个(function()都将停止循环。因为即使我得到答案,这个循环也会执行 调用函数代码: var rd = new FileReader(); rd.onload = function(e)

我有一个带有AJAX调用的函数(以下代码):

这段代码运行良好,但问题是它在所有函数完成后运行。我想先运行这段代码,我需要从XML中获取数据。我需要停止
$(xml).find('pub').each(function()
的循环,只要
Name=$(this).find('pro').text()
文本匹配,每个(function()都将停止循环。因为即使我得到答案,这个循环也会执行

调用函数代码:

var rd = new FileReader();
rd.onload = function(e) {
  var xmlDoc = $.parseXML(this.result);
  var $xml = $(xmlDoc);
  var J_Name = $xml.find('meta').text();
  get_type(J_Name);
  //check allowed child of front tag
  check_allowed_direct_child("places", "Tirunelveli,Tiruchendur,Alwar", "RULE_002", "Fail");
};
rd.readAsText(this.files[i]);

呼叫救援

函数获取类型(名称,cb){
cb=cb | |函数(){};
变量字段名称;
var类型;
变量类型\u映射={
‘小’:‘L’,
“大”:“b”
};
$.ajax({
键入:“GET”,
url:“../home/Asset/MR/MR.xml”,
数据类型:“xml”,
成功:函数(xml){
$(xml)
.find('pub'))
.每个(功能){
if(name=$(this).find('pro').text()){
$(本)
.find('元数据字段')
.每个(功能){
字段名称=$(此字段)
.find('名称')
.text();
if(类型\u映射.hasOwnProperty(字段\u名称)){
类型=类型\映射[字段\名称];
返回false;//每个()的中断
}
});
返回false;//每个()的中断
}
});
cb(type);//执行提供的回调
}
});
}
var rd=new FileReader();
rd.onload=函数(e){
var xmlDoc=$.parseXML(this.result);
var$xml=$(xmlDoc);
var J_Name=$xml.find('meta').text();
获取类型(J_名称、函数(类型){
//一旦get_type()解析,类型为匹配类型或未定义类型,则执行stuff
勾选“允许”或“直接”子项(“位置”、“Tirunelveli、Tiruchendur、Alwar”、“规则002”、“失败”);
});
};
rd.readAsText(this.files[i]);
如果感兴趣,请阅读如何利用承诺,使回调代码更具摘要性:


如果仍然感兴趣,请阅读如何使用async/await使承诺代码更具摘要性:

您能更好地解释一下您真正的问题是什么吗?使用从ajax调用中获取的数据的最佳方法是仅在您拥有数据时处理该数据。例如,您可以为方法get_type()提供回调函数参数并使用获得的数据调用successajax方法。
var rd = new FileReader();
rd.onload = function(e) {
  var xmlDoc = $.parseXML(this.result);
  var $xml = $(xmlDoc);
  var J_Name = $xml.find('meta').text();
  get_type(J_Name);
  //check allowed child of front tag
  check_allowed_direct_child("places", "Tirunelveli,Tiruchendur,Alwar", "RULE_002", "Fail");
};
rd.readAsText(this.files[i]);