Jquery,ajax和图像没有第二次改变

时间:2015-01-14 16:03:11

标签: javascript jquery ajax

我有一个表格,其中包含数据库中的产品列表。

在该列表中,有一列显示开/关图像,可以单击该图像以打开或关闭值。

该列从数据库中显示:

if ($product_special == 1) { 
    $check_icon_special = "<img id='special_off_" . $product_id . "' style='cursor:pointer;' onClick=changeSpecial(" . $product_id . ",'off'); src='../assets/admin/layout/img/check_on.png'/>"; 
}else{ 
    $check_icon_special = "<img id='special_on_" . $product_id . "' style='cursor:pointer;' onClick=changeSpecial(" . $product_id . ",'on'); src='../assets/admin/layout/img/check_off.png'/>"; 
}

点击它然后将其发送到:

        type:"POST",
    url: "/admin/special_change.php",
    dataType: "html",
    data: 'id=' + id + '&state=' + state,
    async: false,
    success: function(msg){         
        if (state == "on") {
            $('#special_on_' + id).attr('src','/assets/admin/layout/img/check_on.png');
        } else {
            $('#special_off_' + id).attr('src','/assets/admin/layout/img/check_off.png');
        }
    },

这很有效。数据库已更新,图像显示打开或关闭的图像。

但是,如果不重新加载页面,我无法再次更改状态。我知道这个问题,因为changeSpecial onlclick事件没有改变。

我不是Jquery的专家。我很高兴我能做到这一点。知道我需要改变什么吗?

1 个答案:

答案 0 :(得分:0)

修正了它。

我将onClick更改为:

onClick=changeSpecial(" . $product_id . ");

然后在special_change.php中我更改了查询,首先在数据库中检查当前值。

根据该值,我会发回或关闭图像的内容。

然后在ajax部分,我改变了这样的事情:

        success: function(msg){         
        if (msg == "on") {
            $('#special_on_' + id).attr('src','../assets/admin/layout/img/check_on.png');
            $('#special_on_' + id).attr('id', 'special_off_' + id);
        } else {
            $('#special_off_' + id).attr('src','../assets/admin/layout/img/check_off.png');
            $('#special_off_' + id).attr('id', 'special_on_' + id);
        }
    },