Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待Ajax完成以执行其他功能_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 等待Ajax完成以执行其他功能

Javascript 等待Ajax完成以执行其他功能,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用Ajax更新页面中的一些值。然后,在is完成后,我需要使用该值执行其他函数 我将一个函数放在另一个函数之后,但即使这样,第二个函数也不会等待Ajax完成 $(document).ready(function(){ $(".data").blur(function(){ var id = $(this).attr('id'); var value = $(this).html(); var ad = id.split(';');

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

我将一个函数放在另一个函数之后,但即使这样,第二个函数也不会等待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);  
}
$(文档).ready(函数(){
$(“.data”).blur(函数(){
var id=$(this.attr('id');
var value=$(this.html();
var ad=id.split(“;”);
更新(valor,id);
功能2(广告[1]);
});
});
函数更新(值、id){
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“div_table”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“update.php?value=“+value+”&id=“+id,true”);
xmlhttp.send();
}
功能2(ad){
var name_1=$(“#name_1”).html();//此部分由Ajax函数在内部更新
$('#'+ad).html(name_1);
}

我通常使用的最佳解决方案是带有返回语句的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();

我通常使用的最佳解决方案是带有返回语句的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();

使用jQueryAjax实际上非常简单

$.ajax({
    url:"data/retrieve",
    success:function(result){
       //call your function
       Function2(result);
 }});
在这里查看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);  
}
$(文档).ready(函数(){
$(“.data”).blur(函数(){
var id=$(this.attr('id');
var value=$(this.html();
var ad=id.split(“;”);
更新(值、id);
});
});
函数更新(值、id){
$.get(“update.php”,{value:value,id:id},函数(数据){
//调用你的函数
职能2(数据);
});
}
功能2(ad){
var name_1=$(“#name_1”).html();//此部分由Ajax函数在内部更新
$('#'+ad).html(name_1);
}

使用jQuery Ajax实际上非常简单

$.ajax({
    url:"data/retrieve",
    success:function(result){
       //call your function
       Function2(result);
 }});
在这里查看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);  
}
$(文档).ready(函数(){
$(“.data”).blur(函数(){
var id=$(this.attr('id');
var value=$(this.html();
var ad=id.split(“;”);
更新(值、id);
});
});
函数更新(值、id){
$.get(“update.php”,{value:value,id:id},函数(数据){
//调用你的函数
职能2(数据);
});
}
功能2(ad){
var name_1=$(“#name_1”).html();//此部分由Ajax函数在内部更新
$('#'+ad).html(name_1);
}

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


此外,我建议使用jQuery进行ajax调用,因为它的API简单得多,而且跨浏览器。请参阅
jQuery.ajax()
的文档了解一些示例:

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


此外,我建议使用jQuery进行ajax调用,因为它的API简单得多,而且跨浏览器。有关一些示例,请参阅
jQuery.ajax()
的文档:

从onreadystatechange-handler调用函数2。ajax的属性为async。当设置为true时,它将首先执行,并且在执行之前不会让任何其他函数运行finishes@Saechel不,你弄错了。XMLHttpRequest构造函数有一个默认为true的异步参数,使得请求asynchronous=不会等待。如果将其设置为false,则会得到一个同步请求=将等待(并阻止其他所有操作,因此不推荐)@some ok。我的错。感谢您提供的信息。从onreadystatechange-handler调用function2。ajax的属性为async。当设置为true时,它将首先执行,并且在执行之前不会让任何其他函数运行finishes@Saechel不,你弄错了。XMLHttpRequest构造函数有一个默认为true的异步参数,使得请求asynchronous=不会等待。如果将其设置为false,则会得到一个同步请求=将等待(并阻止其他所有操作,因此不推荐)@some ok。我的错。感谢info.OP似乎正在使用jQuery,所以这将是最好的解决方案。感谢@abdhoms的回答。试想一下,在我的页面中,我从page update.php获得结果,并将其放入一个具有ID#div_表的div中。我如何使用JQuery.get做到这一点?嗨@user3697768,这是相同的方法。下面是一个示例代码:$.get(“update.php”,{key:value,function(result){//在div$(“#div_表”).html(result);}中显示结果;OP似乎在使用jQuery,所以这将是最好的解决方案。感谢@abdhoms的回答。试想一下,在我的页面中,我从page update.php获得了结果,并将其放在一个带有ID#div_表的div中。我如何使用jQuery.get?Hi@user3697768,这是相同的方法。下面是一个示例代码:$.get(“update.php”,{键:值,函数(结果){//display th