第二次尝试呼叫时,Ajax卡住了

时间:2015-06-03 16:36:14

标签: ajax json

当ajax代码运行一次时,我的Ajax代码不想再次回答。

我的代码:

$.ajax({
    type    :   "POST",
    url     :   "scriptNext.php",
    dataType:   'json',
    data    :   {aId: actId},   
    success :   function(retour){

        $("#actionAll").fadeOut(function() {
            $("#actionAll").html(retour.message1);
            $("#actionAll").fadeIn();
        });


        $("#btnNext").fadeOut(function() {
            $("#btnNext").html(retour.message2);
            $("#btnNext").fadeIn();
        });


    },
    error:  function(xhr, ajaxOptions, thrownError){
        alert("Erreur appel page jQuery !");
        alert(xhr.status);
        alert(thrownError);
    }
});

调用Ajax函数的代码:

<DIV ID=actionAll CLASS=result>
    butter
</DIV>

<DIV CLASS=item ID=btnNext>
  <A HREF=# class=PlusUn actionId=1 attribuid=actionAll >Next
</DIV>

被调用函数(scriptNext.php)第一次返回井数据(糖),但是,在更新HREF项目字段后,不能再次调用 - 没有任何事情发生。

2 个答案:

答案 0 :(得分:0)

这是我要采取的方法,

一个。检查ajax调用是否正在进行并在再次调用相同方法之前中止它。

湾为此,请遵循我在下面提供的代码结构

 var getDataAjaxCall;//declare this variable

function GetData(){

//check if previous call is still pending and abort it before making a new 
//one.
if (getDataAjaxCall&& getDataAjaxCall.readyState != 4)
        getDataAjaxCall.abort();

getDataAjaxCall = $.ajax({
                type    :   "POST",
                url     :   "scriptNext.php",
                dataType:   'json',
                data    :   {aId: actId},   
                success :   function(retour){

                    $("#actionAll").fadeOut(function() {
                        $("#actionAll").html(retour.message1);
                        $("#actionAll").fadeIn();
                    });

                    $("#btnNext").fadeOut(function() {
                        $("#btnNext").html(retour.message2);
                        $("#btnNext").fadeIn();
                    });
                },
                error:  function(xhr, ajaxOptions, thrownError){
                if (ajaxOptions!= 'abort') {                
                    alert("Erreur appel page jQuery !");
                    alert(xhr.status);
                    alert(thrownError);
                }
             }
       }); 
}

答案 1 :(得分:0)

它可能不符合ajax的原则,但尝试添加:

async: false

为我工作,但仍然无法理解为什么。