使用<img/> onclick触发js功能

时间:2017-07-24 10:36:58

标签: javascript php html ajax

我正在开设一个像Youtube一样的“有点”的网站。在这里,我在评论的喜欢/不喜欢选项上遇到了麻烦。

我这样做的方法是单击图像(thumbsUp.png和thumbsDown.png)我正在调用js函数(以下是php代码,其中$ enregistrement =注释):

$block .='<img src="'.APP_IMG_PATH.'thumbsup.png" onclick="javascript:addLike('.$enregistrement["Comm_ID"].')" style="width:20px;height:20px"></img>  '.$enregistrement["Likes"].'  '
       . '<img src="'.APP_IMG_PATH.'thumbsdown.png" onclick="javascript:addDislike('.$enregistrement["Comm_ID"].')" style="width:20px;height:20px"></img>'.$enregistrement["Dislikes"].'';

我的js功能是:

$block .='
<script>
function addlike(idCo){
    $.ajax({
        type: "GET",
        url: "'.APP_SERVICE_PATH.'SetComment.php",
        data: {Like:1, commID:idCo},
        success: function(data){
        },
        error: function(exc){
              alert("Exception: Une erreur a été levé sur $_GET de addLike(). " + exc);
        }
   )};
}

function addDislike(idCo){
    $.ajax({
       type: "GET",
       url: "'.APP_SERVICE_PATH.'SetComment.php",
       data: {Dislike:1, commID:idCo},
       success: function(data){
       },
       error: function(exc){
           alert("Exception: Une erreur a été levé sur $_GET de addDislike().");
       }
  )};
}
</script>';

但onclick从未触发过!我使用<a href="">标签周围的<img>标签,它可以工作,但每次点击都会重新加载页面,这是我想要避免的。

有人能看出我做错了吗?

注意:我知道我应该分开php和html,这是错误的编码。请不要“评论”:D

2 个答案:

答案 0 :(得分:0)

你的代码有很多问题,首先onclick="javascript:addLike('.$enregistrement["Comm_ID"].')"是一个自我调用的函数(它被立即调用),你需要在没有括号的情况下注册它。

使用此<a data-id="'.$enregistrement["Comm_ID"].'"></a>对图像进行环绕,然后像这样调整您的功能

function addDislike(event) {
    // To prevent the default behavior - following the link
    event.preventDefault();

    var idCo = this.dataset.id;
    // or var idCo = $(this).data("id");

    $.ajax({
        type: "GET",
        url: "'.APP_SERVICE_PATH.'SetComment.php",
        data: {Dislike:1, commID:idCo},
        success: function(data){
        },
        error: function(exc){
        alert("Exception: Une erreur a été levé sur $_GET de 
        addDislike().");
   }

}

答案 1 :(得分:0)

我发现了我的错误:我打开了这样的ajax:FormArray然后关闭它$.ajax({而不是)};