更新记录ajax jquery is';t工作


update records ajax jquery isn't working

我正在编写一个可以更新数据库中状态的脚本。

我的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后面的逗号。

当javascript中的函数被调用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');
           }
        }
});