我的ajax很奇怪。我有一个调用ajax的函数,方法的结构是这样的:当通过enter键触发事件时,调用了某个函数,然后在该函数内调用ajax函数并返回一个值。实际上它运作良好,但仅在第二个事件被触发等等...例如我关注一个文本框然后按回车,一开始没有任何反应输入,但下次你输入它运作良好等等你按Enter键。任何人都知道为什么会那样?这是我的ajax代码:
function myFunction(val){
var passVal = updateVal(val);
alert(passVal); //on first load of page/after refreshing the page, this wont happen on first trigger of event
}
function updateVal(val){
$.ajax({
type : 'POST',
url : 'updateVal.php',
dataType : 'json',
data: "val="+val,
complete : function(data){
bool = true;
},
error : function() {
bool = false;
}
});
return bool;
}
答案 0 :(得分:0)
将ajax代码更改为同步:
$.ajax({
type : 'POST',
async: false,
url : 'updateVal.php',
dataType : 'json',
data: "val="+val,
complete : function(data){
bool = true;
},
error : function() {
bool = false;
}
});
答案 1 :(得分:0)
$ .ajax是后台调用,它立即返回;你需要像
这样的东西function updateVal(val){
$.ajax({
type : 'POST',
url : 'updateVal.php',
dataType : 'json',
data: "val="+val,
success: function(data) {
/* Do something with the DATA once the server replied, it may take a while */
alert(data);
},
error : function() {
alert(false);
}
});
}
这是最好的方法,因为它不会像同步调用那样阻止UI线程