1

我有一个确认对话框,当用户单击链接时会导致更新查询。

<div class="ui-bar">
    <a id="confirm" href="#" data-strid="<?php echo $str_info['str_id'] ?>">Confirm</a>
</div>

我要做的是运行更新查询,然后重新加载上一页,其中包含更新的信息。

我以为我完成了这一点,但是萤火虫中不断出现某种错误,而 ajax 似乎并不成功。错误仅在我重新加载页面时出现......当我对其进行延迟时,没有错误,所以我什至无法阅读它是什么。

<script>
        $('#confirm').click(function (){
        var str_id = $("#confirm").data("strid");
        $.ajax({
            type: "POST",
            async: true,
            url: '../../ajax/add_land',
            dataType: 'json', 
            data: { str_id: str_id },
            success: function(){

            }
        });
        $('.ui-dialog').dialog('close')
        setTimeout(
            function() 
            {
                location.reload()
            }, 750);
        return false;
    });
</script>

有什么好的方法可以做到这一点吗?同样,总而言之,我希望执行更新查询,然后重新加载上次查看的页面(不是对话框),以便显示更改的信息。 ../../ajax/add_land是在 PHP 中。

4

1 回答 1

1

实现这一点的更好方法很少,但这超出了重点,在您的情况下,您应该这样做:

<script>
        $('#confirm').click(function (){
        var str_id = $("#confirm").data("strid");
        $.ajax({
            type: "POST",
            async: true,
            url: '../../ajax/add_land',
            dataType: 'json', 
            data: { str_id: str_id },
            success: function(){
              $('.ui-dialog').dialog('close');            
              location.reload();
            }
        });
        return false;
    });
</script>

当 ajax 调用成功执行时,它将调用成功回调中的代码。Ajax 调用是异步操作,这意味着其余代码不会等待它完成。因为这个成功回调被使用。所以需要超时。

还有一件事,还有一个错误回调,用它来调试ajax问题:

error: function (request,error) {
    alert('Network error has occurred please try again!');
}, 
于 2013-02-27T14:10:49.230 回答