在AJAX调用中返回false禁用php更新

时间:2015-07-13 16:31:19

标签: javascript jquery ajax

我有以下脚本,我遇到问题$("#success")淡出和延迟。我以为我弄清楚了,但是当我return false;没有注释掉时,我的php脚本无效。当它被注释掉时,我的ajax调用工作,并且php文件执行它应该做的事情,但是淡出和延迟不起作用。

有没有人知道为什么会这样?

 <script>
    $(document).ready(function(){

    $('.approve').click(function(){
        $.ajax({
           url: 'userRequest_approve.php',
           type: 'POST',
           data: {
            id: $(this).val(), //id
            status: 'Approved' //status
           },
           success: function(data) {
            //do something with the data that got returned
             $("#success").fadeIn();
                 $("#success").show();
                 $('#success').html('User Status Changed!');
                 $('#success').delay(5000).fadeOut(400);
           },
           //type: 'POST'
        });
    //return false;
    });
    });
</script>

更新:从表格中添加的源代码

    <form action="" method="POST" id="status">
             <input type='hidden' name='id' value='33' id='pending_id'/>
Name - hgfd hgd</br>Username - testttttt</br></br>      </form>

                        <button class="approve" type="submit" form="status" name="approve" value="33">Approve</button>
                        <button id="deny" type="submit" form="status" name="deny" value="Denied">Deny</button><br><br><br>
        <form action="" method="POST" id="status">
             <input type='hidden' name='id' value='23' id='pending_id'/>
Name - boo boo</br>Username - boopbfd</br></br>     </form>

1 个答案:

答案 0 :(得分:-1)

您需要使用promise等待来自服务器的响应。这将“等待”来自服务器代码的响应,然后在“从服务器返回响应之后”执行代码。

<script>
$(document).ready(function(){

$('.approve').click(function(){
    var promise = $.ajax({
       url: 'userRequest_approve.php',
       type: 'POST',
       data: {
        id: $(this).val(), //id
        status: 'Approved' //status
       }
    });

    promise.then(function(data){
        $("#success").fadeIn();
             $("#success").show();
             $('#success').html('User Status Changed!');
             $('#success').delay(5000).fadeOut(400);
    });
});

});