Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery、ajax和图像不会第二次更改_Javascript_Jquery_Ajax - Fatal编程技术网

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);
        }
    },