Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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/1/php/264.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 只允许ajax请求触发一次(如按钮)_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 只允许ajax请求触发一次(如按钮)

Javascript 只允许ajax请求触发一次(如按钮),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个按钮,单击该按钮可将1添加到数据库中的表值中(即类似按钮) 当用户单击按钮时: var button_id = $(e.target).closest('div').attr('id'); var id = button_id.substring(12); $.ajax({ method: 'POST', url: 'update_like.php', data: {id:id}, success: function(){ //

我有一个按钮,单击该按钮可将1添加到数据库中的表值中(即类似按钮)

当用户单击按钮时:

  var button_id = $(e.target).closest('div').attr('id');
  var id = button_id.substring(12);
  $.ajax({
    method: 'POST',
    url: 'update_like.php',
    data: {id:id},
    success: function(){
     //
    },
    error: function(){
      //
    }
  }) 
update_like.php

$id = mysqli_real_escape_string($conn,$_POST['id']);

if (!empty($_POST)){
    mysqli_query($conn,"UPDATE posts SET likes=likes+1 WHERE id='$id'");
}
Q:如何检查他们是否已经喜欢它,这样他们就只能喜欢这篇文章一次?

我只是想到了这样的事情:

有一个名为“likers”或类似的专栏,其中有一长串喜欢这篇文章的用户ID

i、 e

5 217 16 31893…
您可以尝试以下方法:

var button_id = $(e.target).closest('div').attr('id');
var id = button_id.substring(12);
var idArray = [];
if (idArray.indexOf(id) === -1) {
 ajaxCall = $.ajax({
    method: 'POST',
    url: 'update_like.php',
    data: {id:id},
    success: function(){
     //
      idArray.push(id);
    },
    error: function(){
      //
    }
  });
}
在服务器端,您可以尝试以下操作: 假设ID是逗号分隔的列表

UPDATE posts 
SET likes = likes+1 
WHERE id = '$id'
AND FIND_IN_SET('$id', listofuserid) = 0 

客户端是否可以自己编辑/禁用它,以便继续按like按钮?难道不是服务器端吗?@frosty噢!您关心的是,如果用户刷新页面,会发生什么情况?为什么不在页面加载时检查一篇文章是否被用户喜欢,如果是,则不显示“喜欢”按钮。或者尝试上面的查询进行更新。您没有显示单击事件。但也要考虑“<代码> $”(“*”按钮)。(点击)<代码> > <代码> $(“*”按钮)。它只触发一次-请参见@mplungjan。如果未更新,则可能由于错误而无法再次单击。对吗?他们不能刷新页面,然后在使用
时再次单击它。一个
?如果用户喜欢该按钮,则应禁用或隐藏like按钮。因此,所有过程都可以ess应该在服务器上,回调应该删除处理程序。
UPDATE posts 
SET likes = likes+1 
WHERE id = '$id'
AND FIND_IN_SET('$id', listofuserid) = 0