我正在编写一个可以更新数据库中状态的脚本。
我的php代码是:
<?php
include ('../model/incentives.class.php');
$change = new Incentives;
$change_status = $change->change_status($_GET['id'], $_GET['status']);
?>
这是有效的,(我在没有ajax的情况下测试了它)
我的ajax是:
function change_status(id, status) {
$.ajax({
type: 'GET',
url:('control/change_status.control.php'),
data: 'id='+id+'&status='+status,
cache: false,
})
window.location.reload(true);
}
我用调用函数
<a href="javascript:change_function(1, 0);">Change Status</a>
但这行不通。有人知道怎么解决这个问题吗?
thx!
尝试将window.location.reload放入Ajax请求的成功回调中,如下所示:
$.ajax({
type: 'GET',
url:('control/change_status.control.php'),
data: 'id='+id+'&status='+status,
cache: false,
success:function(data){window.location.reload(true);}
});
否则,重载将在进行Ajax调用的同时运行,并且由于重载,Ajax调用将中断。
此外,请确保您不要用逗号结束Ajax属性。你有:
{
type: 'GET',
url:('control/change_status.control.php'),
data: 'id='+id+'&status='+status,
cache: false,
}
如果缓存属性后面没有其他属性,则不应存在false后面的逗号。
function change_status(id, status)
时,您正在调用<a href="javascript:change_function(1, 0);">Change Status</a>
所以只需将<a href="javascript:change_function(1, 0);">Change Status</a>
更改为"<a href="javascript:change_status(1, 0);">Change Status</a>
"
我想在下面替换
data: 'id='+id+'&status='+status
带有
data: { id: id, status: status}
会解决你的问题。
好的,让我们试试这个:
对于PHP:
<?php
header('Content-Type: application/json');
include ('../model/incentives.class.php');
$change = new Incentives;
$change_status = $change->change_status($_GET['id'], $_GET['status']);
if ($change_status) {
echo "true";
} else {
echo "false"
}
?>
Json:
$.ajax({
type: 'GET',
url:('control/change_status.control.php'),
data: 'id='+id+'&status='+status,
cache: false,
success:function(data){
if (data == "true") {
alert('reload');
//when this message comes up, use the window.reload thingy
} else {
alert('no reload');
}
}
});