两个ajax帖子首先阻止第二个工作

时间:2017-10-27 20:09:05

标签: ajax

我有一份代表商店的记录清单。

表格如下:

<tbody>                                     
<?
$sql = ...//sql to get list of shops                                    
...                 
while($row = mysql_fetch_array($sql)) {
$i++;
//puts in several variables contents of sql fields
...
?>
<tr id="<?=$id_branch;?>" <? if($i==1) echo 'class="current_active"';?>>
<td ...(styling)...<span id="th_shopname_<?=$id_branch;?>"><?=truncate($shop_name,40);?></span></td>
<td ...(styling)...<span ...id="th_address_<?=$id_branch;?>"<?=truncate($address,25);?></span></td>
etc. etc
<? } ?>  

当您点击其中一个时,第二部分会通过ajax帖子填充详细信息,并且当前记录会使用当前活动类进行丰富。

$(document).on('click', 'table tbody tr', function(e) {
        var row_id = $(this).attr("id");
        if($("#"+row_id).hasClass("current_active")) {
}
        else {
            $('table tbody tr').removeClass("current_active");   
            $("#"+row_id).addClass("current_active");  

                $.ajax({
              type: 'POST',
              url: "ajax/account_details_container.php",
              data: {richiesta_id: row_id},
              dataType: 'html',
              success: function(html){
                    $("#account-details-container").html(html);
                    /* populates account-details-container*/

                     etc etc                
              },
            });

用户可以修改第二部分,然后按SAVE按钮,调用另一个ajax帖子以启动更新

$("#shop_edit_form").submit(function(e)
    {var postData = $(this).serializeArray();

        $.ajax(
        {
            url : "ajax/edit_shop.php",
            type: "POST",
            data : postData,
            dataType: "json",
            success:function(data, textStatus, jqXHR) 
            {
               ...changes some styling...
               ...modifies first table row
                $("#th_shopname_"+data.id_shop).text(data.shop_name);
                $("#th_address_"+data.id_shop).text(data.address);
                $("#th_city_"+data.id_shop).text(data.city);
                $("#th_phone_"+data.id_shop).text(data.phone);
                $("#th_contact_"+data.id_shop).text(data.contact);

            },
            error: function(jqXHR, textStatus, errorThrown) 
            {
                alert("An error occurred. Please try again or contact administrator.");      
            }
        });
        e.preventDefault(); //STOP default action
    });

现在一旦我登陆页面,一切都运作良好。用户可以编辑详细信息,然后提交并运行。

BUT

第二个ajax帖子STOPS WORKING,或者如果第一个ajax帖子刚刚被触发,似乎甚至不会被调用。两个ajax帖子属于不同的动作,不会自动一个接一个地启动,但是如果我在第一个表中的不同记录上clic,那么从一个记录切换到另一个记录,从而启动&#39; onclick表...& #39;发布,然后我通过调用第二个ajax帖子进行修改并尝试保存IT DOESN&#39; T RUN AT ALL。此外,在这种情况下,页面似乎重新加载(我不知道是作为原因还是由于问题的结果)。是否有任何理由可以在另一个ajax帖子之后立即调用ajax帖子?

1 个答案:

答案 0 :(得分:0)

不,只要您不关心响应是否以某种随机顺序返回,您就可以在ajax上执行ajax。您希望运行的onclick代码是否被响应html覆盖?响应错误,阻塞页面使其停止工作?您是否按F12查看发生的错误?