至少我认为这就是正在发生的事情。我在.js文件中有代码,该文件调用另一个.js文件中存在的函数。此函数对php页面进行ajax调用,该页面创建并返回一个选定的单选按钮列表。当函数返回时,代码被执行,将所选单选按钮的值传递给php页面并生成更多列表(再次通过ajax)。每次用户更改选定的单选按钮时,列表都会更新。当我通过单击选择它们时,这可以工作,但是,当页面加载时,选择了正确的单选按钮,但捕获所选单选按钮的代码返回undefined。当我在函数调用后直接发出警报时,它可以正常工作。这让我相信事情正在按顺序执行。
我之前解决这个问题的方法是在函数中的第一个函数调用之后放置代码,并在第一个函数的末尾调用该函数。但是,这对我理解为什么会发生这种情况没有帮助。这是代码:
第一档:
$(document).on("pageinit","#add_page",function(){
restore_addreg_page();
//alert('function finished');
var selected_group = $('#group :checked').val();
}
第二档:
function restore_addreg_page(){
get_major_groups();
...more code
}
function get_major_groups(){
$.ajax({
url: 'PHP_Scripts/get_major_groups.php',
dataType: 'html',
success: function(data){
$('#major_groups').empty();
$('#major_groups').append(data);
$('#major_groups').trigger('create');
$('input:radio').each(function(){
if($(this).attr("id") == 'major_group0'){
$(this).prop("checked",true).checkboxradio('refresh');
}
});
},
error: function(data){
alert('Query Error');
}
});
}
如果我取消注释警报,一切正常,否则selected_group未定义,之后的调用取决于该失败。
答案 0 :(得分:0)
此处函数在获得结果之前返回。默认情况下,ajax()调用是异步调用。要使其同步,请在ajax()中将async属性设置为false,如图所示。
$.ajax({
...........
async: false,
..............