Ajax不会在第一次触发时触发

时间:2011-12-05 19:26:15

标签: javascript jquery

我的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;
}

2 个答案:

答案 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线程