Jquery 使用带有函数的ajax返回xml文本
试图让getFromWho函数从xml文件返回收件人文本,我可以让它记录文本,但由于某些原因,我无法让它在函数中返回Jquery 使用带有函数的ajax返回xml文本,jquery,Jquery,试图让getFromWho函数从xml文件返回收件人文本,我可以让它记录文本,但由于某些原因,我无法让它在函数中返回 function preSubmit(){ var optionTexts = []; $("section").each(function(){ var h2 = $(this).find("h2").text(); optionTexts.push(h2); optionTexts.push("\n");
function preSubmit(){
var optionTexts = [];
$("section").each(function(){
var h2 = $(this).find("h2").text();
optionTexts.push(h2);
optionTexts.push("\n");
$("ol li", this).each(function() { optionTexts.push($(this).text()) })
});
var splitText = optionTexts.join("\n");
console.log(splitText)
splitText += getFromWho();
return splitText;
}
function getFromWho() {
$.ajax({
type: "GET",
url: "forWho.xml",
dataType: "xml",
success: function(xml) {
console.log($(xml).find('recipient').text())
return $(xml).find('recipient').text();
}
});
}
由于您使用的是ajax,因此执行将是异步的,这意味着您无法从ajax回调返回任何值 解决这个问题的正确方法是使用回调方法或使用ajax承诺 前
function preSubmit(callback){
var optionTexts = [];
$("section").each(function(){
var h2 = $(this).find("h2").text();
//optionTexts.push("<b>");
optionTexts.push(h2);
optionTexts.push("\n");
$("ol li", this).each(function() { optionTexts.push($(this).text()) })
});
var splitText = optionTexts.join("\n");
getFromWho().done(function(xml){
splitText += $(xml).find('recipient').text();
callback(splitText)
});
}
function getFromWho() {
return $.ajax({
type: "GET",
url: "forWho.xml",
dataType: "xml"
});
}
preSubmit(function(splitText){
//Do actions which depends on splitText
});
//You cannot do anything which depends on splitText here as preSubmit is asynchronous