Javascript Jquery、ajax和图像不会第二次更改
我有一个表,其中包含数据库中的产品列表 在该列表中有一列显示开/关图像,单击该图像可更改开/关值 该列显示了数据库中的以下内容:Javascript Jquery、ajax和图像不会第二次更改,javascript,jquery,ajax,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='../a
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'/>";
}
这很有效。数据库更新,图像显示打开或关闭图像
但是,如果不重新加载页面,我无法再次更改状态。我知道这个问题,因为changeSpecial onlclick事件没有更改
我不是Jquery方面的专家。我已经很高兴我能做到这一点。知道我需要更改什么吗?已修复
我将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);
}
},
您能否添加代码,显示您在何处更改正在更改的$product\特殊变量以及正在更改的状态变量?另外,您是如何发布AJAX帖子的?那么您是如何获取这些数据的呢。如果数据在数据库中,而您在数据库中对其进行了更改,则需要将其取回并在javascript中对其进行更改$product\u special是数据库中的一个值。我认为问题在于onclick。第一次单击时,图像将更改,数据库将更新。但是,onclick仍将显示相同的值。因此,如果我再次单击,它将传递相同的值。然后什么也没有发生,因为它已经显示了这个值。我想知道这是否与您的元素正在动态创建而javascript没有看到您的新元素有关。看来你可能得调查一下了。您的onClick是否仅针对您的元素?我建议将其写入javascript,而不是在每次单击时必须重新创建的元素上联机。
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);
}
},