我有一个确认对话框,当用户点击链接时会导致更新查询。
<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中。
答案 0 :(得分: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!');
},