更新记录ajax jquery无法正常工作

时间:2013-08-20 09:31:07

标签: php jquery ajax

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

我的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!

4 个答案:

答案 0 :(得分:0)

尝试将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之后的逗号不应该存在。

答案 1 :(得分:0)

当调用javascript中的函数<a href="javascript:change_function(1, 0);">Change Status</a>时,您正在调用function change_status(id, status) 因此,只需将<a href="javascript:change_function(1, 0);">Change Status</a>更改为“<a href="javascript:change_status(1, 0);">Change Status</a>

即可

答案 2 :(得分:0)

我想替换下面的

data: 'id='+id+'&status='+status

data: { id: id, status: status}

将解决您的问题。

答案 3 :(得分:0)

好的,试试这个:

对于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');
           }
        }
});