0

我正在尝试实现一项功能来报告网站上的评论。我正在使用 PDO 并在 PHP 类中具有该功能。

单击“报告”时,调用了一个 JS 函数,该函数使用 Ajax 来调用 PHP 函数,该函数将更新数据库/向管理员发送电子邮件。

我不明白为什么,但传递给 JS 的 id 总是相同的。

我已经完成了各种输出来测试,并且在 HTML 中,id 是正确的。目前我正在测试 3 种不同的。当我在函数中提醒 id 时,它总是相同的。

任何帮助深表感谢。

的HTML:

<? foreach ($comments as $c){
   $commentId = $c['id']; ?>
     <p><a href="#" id="report" name="report" data-value="<?php echo $commentId ?>" onclick="reportComment(); return false;">Report?</a></p>
<? } ?>                 

JS:

function reportComment(){

var id = $('#report').attr('data-value');
var url = "/Perspect/commentsAjax/report.php";
var params = {id: id};

$.ajax({
    cache: false,
    type: 'POST',
    url: url,
    data:params,
    dataType:'json',

    success: function(){
        alert("sucess");
        //change ahref to say this comment has been reported
    },
    error: function(error){
        console.log(error);
    }
});
alert("ID" + id);
}

PHP:

<?php include '../core/init.php';

if($_POST){
  $id = $_POST['id'];
  $articleComments->reportComment($id);
}
?>
4

1 回答 1

3

问题是您的所有链接都共享相同的id="report",因此您无法访问其中的一个(但 JS 会自动选择第一个出现)。这可以通过简单地将 id 作为参数传递来解决。

<p><a href="#" name="report" onclick="reportComment(<?php echo $commentId; ?>); return false;">Report?</a></p>
//...
function reportComment(id){

当你想在点击后操作元素时,你可以像下面这样

<? foreach ($comments as $c){
   $commentId = $c['id']; ?>
     <p><a href="#" id="report_<?php echo $commentId ?>" name="report" onclick="reportComment(<?php echo $commentId ?>); return false;">Report?</a></p>
<? } ?>

现在你有唯一的 idsreport_1report_2,你的 JS 可能如下所示

function reportComment(id){
    //do your stuff
    $("#report_"+id).text("already reported");

正如您问题的评论中所建议的那样,这也可以仅使用 JavaScript 来解决(借助 jQuery),您不需要onclickHTML 中的逻辑

<a class="report" data-value="1">report</a>
<a class="report" data-value="2">report</a>

这可能是JS

$(".report").click(function(){
    var id = $(this).attr('data-value');
    //do your magic
    $(this).text('already reported');
});
于 2013-09-27T13:14:46.853 回答