等待Ajax完成其他功能

时间:2014-08-04 23:41:39

标签: javascript jquery ajax

我正在使用Ajax更新页面中的一些值。然后,在完成之后,我需要使用该值来执行其他功能。

我将一个函数放在另一个函数之后,但即使这样,第二个函数也没有等待Ajax完成。

$(document).ready(function(){
    $(".data").blur(function(){
        var id = $(this).attr('id');
        var value = $(this).html();
        var ad = id.split(';');

        Update(valor, id);
        Function2(ad[1]);


    });
});


function Update(value, id){
    if (window.XMLHttpRequest) {
           // code for IE7+, Firefox, Chrome, Opera, Safari
           xmlhttp=new XMLHttpRequest();
         } else { // code for IE6, IE5
           xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         xmlhttp.onreadystatechange=function() {
           if (xmlhttp.readyState==4 && xmlhttp.status==200) {
             document.getElementById("div_table").innerHTML=xmlhttp.responseText;
           }
         }
        xmlhttp.open("GET","update.php?value="+value+"&id="+id,true);
        xmlhttp.send();

}


function Function2(ad){
    var name_1 = $("#name_1").html(); //This part is updated inside a <span> by the Ajax function
    $('#'+ad).html(name_1);  
}

3 个答案:

答案 0 :(得分:4)

使用jQuery Ajax实际上非常简单。

$.ajax({
    url:"data/retrieve",
    success:function(result){
       //call your function
       Function2(result);
 }});

在这里查看jQuery Ajax文档:http://api.jquery.com/jquery.ajax/

编辑:由于您使用GET作为请求类型,为什么不使用jQuery.get?在这里,您可以使用此代码。简单干净。

此外,如果适合您,请不要忘记将此标记为答案。我们在StackOverflow上不想要无答案的问题,对吗?

$(document).ready(function(){
    $(".data").blur(function(){
        var id = $(this).attr('id');
        var value = $(this).html();
        var ad = id.split(';');

        Update(value, id); 
    });
});


function Update(value, id){
    $.get("update.php", {value: value, id: id}, function (data) {
         //call your function
         Function2(data);
    });
}


function Function2(ad){
    var name_1 = $("#name_1").html(); //This part is updated inside a <span> by the Ajax function
    $('#'+ad).html(name_1);  
}

答案 1 :(得分:2)

您必须在处理程序函数内调用function2,该函数位于您分配给onreadystatechange的函数内。

另外,我建议使用jQuery来进行ajax调用,因为它的API更简单,跨浏览器。有关示例,请参阅jQuery.ajax()的文档:http://api.jquery.com/jquery.ajax/

答案 2 :(得分:0)

我通常使用的最佳解决方案是带有return语句的ajax函数

        function ajax_func(value,id)
        {
            if (window.XMLHttpRequest)
                AJAX=new XMLHttpRequest(); 
            else
                AJAX=new ActiveXObject("Microsoft.XMLHTTP");
            if (AJAX)
            {
                AJAX.open("GETT", "update.php", false);
                AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                AJAX.send("value="+value+"&id="+id);
                return AJAX.responseText;                                         
            } 
            else
                return null;
        } 

您需要做的就是获得结果并执行其他功能

var Result = ajax_func("value","id");
new_func();