PHP ::: 2 AJAX调用::: 2回复:::在序列中

时间:2012-01-18 06:37:35

标签: javascript jquery ajax mootools

这个问题已经被问了好几次,但是已经解决了不好的问题。

我认为一个不好的意思是:

使用像mootools或jquery

这样的库

在请求之间使用某种延迟,例如setTimeout(“doNext()”,3000);

具体来说,我想要实现的是这个。

<div onClick="javascript:one();two();"></div>

一个()和两个()是AJAX

一个()必须在两个()

之前

3 个答案:

答案 0 :(得分:4)

必须在two();中的ajax的成功处理程序中调用

one()。 E.g:

HTML:

<div onClick="javascript:one();"></div>

的javascript:

function one() {
    $.ajax({
        ...
        success: function() {
            setTimeout(two,3000);
        }
    });
}

function two() {
    $.ajax({
        ...
    });
}

答案 1 :(得分:3)

试试这个!!!

function one() {
    $.ajax({
        ...
        aysnc:false,
    });
}

function two() {
    $.ajax({
        ...
        aysnc:false,
    });
}

答案 2 :(得分:1)

我同意scessor第二个函数应该在第一个函数中执行 - 成功。这是我的AJAX函数,没有任何jquery或者需要:

    function ajax_call_1(divId, params)
    {
        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){
                if(divId!='')
                    document.getElementById(divId).innerHTML=xmlhttp.responseText;
                else{
                    // do something else
                }
                ajax_call_2('html_id', 'parameters_to_be_send')
            }
        }
        xmlhttp.open("POST", "script_url", true); //file
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length); //length
        xmlhttp.setRequestHeader("Connection", "close"); 
        xmlhttp.send(params); //parameters
    }

第二个功能是相同的,但没有成功的函数调用:

        function ajax_call_2(divId, params)
        {
            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){
                    if(divId!='')
                        document.getElementById(divId).innerHTML=xmlhttp.responseText;
                    else{
                        // do something else
                    }
                }
            }
            xmlhttp.open("POST", "script_url", true); //file
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-length", params.length); //length
            xmlhttp.setRequestHeader("Connection", "close"); 
            xmlhttp.send(params); //parameters
        }

ajax_call_1函数参数是:

divId :在AJAX调用后保存结果的html元素的id

参数:应与请求一起发送的参数,即您需要发送的ID,名称或某种其他值。

说实话,这2个功能不是很可重复使用。我正在将它们更改为更抽象,因此它们可以用于每两个同时进行的AJAX调用,但是现在它们做得很好。