当前位置: 首页 > 知识库问答 >
问题:

我的ajax代码只从一组隐藏的输入中获取一个值

宿嘉庆
2023-03-14

所以基本上我有这个html文档,由PHP代码(Foreach)生成,它提取不同的评论行(每个作者有不同的用户标识),我将cid(评论的标识)和uid(评论作者的用户标识)存储在一组隐藏输入中:

用户ID

<?php foreach ($comments as $comment) : ?>

                                    

                                    <a href="javascript:void(0);" class="banusr"
                                        class="btn btn-info btn-link pull-right "> <i class="fa fa-ban"></i>
                                        Ban</a>

                                    <input type="hidden" class="hidden" id="hidusr" name="uid"
                                        value="<?php echo trim(htmlspecialchars($comment['idauth'])) ?>" />
                                <p><?php echo htmlspecialchars($comment['text']); ?></p>
        <?php endforeach; ?>

所以网页的结果是这样的:

<a href="utenti.php?id=2"> Author Name  </a>
    <a href="javascript:void(0);" class="banusr"  class="btn btn-info btn-link pull-right "> <i class="fa fa-ban"></i>
                                            Ban</a>
                                      
     <input type="hidden" class="hidden" id="hidusr" name="uid" value="2" />

<a href="utenti.php?id=9"> Other Author Name  </a>
    <a href="javascript:void(0);" class="banusr"  class="btn btn-info btn-link pull-right "> <i class="fa fa-ban"></i>
                                            Ban</a>
                                      
     <input type="hidden" class="hidden" id="hidusr" name="uid" value="9" />

现在我有了一些javascript/jquery代码来管理这一点,在单击Ban按钮时,ajax获取hidusr param(该评论的作者)并向禁止该用户的php页面发送请求,摘录:

$(document).ready(function() {
    bans = $(".banusr");

        for (var i = 0; i < bans.length; i++) {

            ban = bans[i];

            ban.onclick = function(e) {

                    uid = $("#hidusr").val();

                    $.ajax({
                        method: "POST",
                        url: "./ajax/ban.php?post",
                        data: {
                            
                            usr_uid: uid
                        }
});

但我不知道为什么,如果你开始禁止用户从上到下的评论系列,没关系,代码需要正确的id。

所以我首先禁止Headers:usr\u uid:2中的从上到下:Ajax响应,然后单击Headers:usr\u uid:9中的禁止:Ajax响应

但如果我从下点击,例如:我按Ban键以获取最后一条评论(“其他作者名”,hidusr:9)标题中的Ajax响应:usr_uid 2

有人知道怎么解决吗,提前谢谢

共有1个答案

云季萌
2023-03-14

首先,考虑PHP如何构造页面。它正在设置超文本标记语言的ID,因此您的循环应该创建唯一ID。

<?php 
$i = 1;
foreach ($comments as $comment) {
?>
<a href="#" class="banusr" class="btn btn-info btn-link pull-right ">
  <i class="fa fa-ban"></i> Ban
</a>
<input type="hidden" class="hidden" id="hidusr-<?php echo $i; ?>" name="uid[]" value="<?php echo trim(htmlspecialchars($comment['idauth'])) ?>" />
<p><?php echo htmlspecialchars($comment['text']); ?></p>
<?php
$i++;
}
?>

现在每个ID都将是唯一的:hiduser-1、hiduser-2,等等。。。

我还更新了name属性,以便在提交表单时收集所有这些属性,name="uid[]"

现在,您的超文本标记语言将类似于:

<a href="#" class="banusr" class="btn btn-info btn-link pull-right ">
  <i class="fa fa-ban"></i> Ban
</a>
<input type="hidden" class="hidden" id="hidusr-1" name="uid[]" value="2" />
<a href="#" class="banusr" class="btn btn-info btn-link pull-right ">
  <i class="fa fa-ban"></i> Ban
</a>
<input type="hidden" class="hidden" id="hidusr-2" name="uid[]" value="9" />

现在我们来看看JavaScript。

$(function() {
  $(".banusr").click(function(event){
    event.preventDefault();
    var uid = $(this).next("input").val();
    $.ajax({
      method: "POST",
      url: "./ajax/ban.php?post",
      data: {
        usr_uid: uid
      }
    });
  });
});

这样,我们将单击事件回调绑定到所有Ban链接。使用this,我们可以选择下一个元素,它是相对于单击的链接的输入。

查看更多:

  • https://learn.jquery.com/events/

在我看来,似乎没有必要在输入中隐藏ID。我只想把它放在链接本身。

<?php 
foreach ($comments as $comment) {
?>
<a href="<?php echo trim(htmlspecialchars($comment['idauth'])) ?>" class="banusr" class="btn btn-info btn-link pull-right ">
  <i class="fa fa-ban"></i> Ban
</a>
<p><?php echo htmlspecialchars($comment['text']); ?></p>
<?php
}
?>

然后,您可以简单地使用jQuery:

$(function() {
  $(".banusr").click(function(event){
    event.preventDefault();
    $.ajax({
      method: "POST",
      url: "./ajax/ban.php?post",
      data: {
        usr_uid: $(this).attr("href")
      }
    });
  });
});

 类似资料:
  • 我试图用web表单做一个web调查应用程序。问题是我在调查创建部分有麻烦。

  • 我在jsp中有输入类型隐藏变量 我将从javascript Ajax成功 在同一个jsp中,我有代码 问题是我需要在jsp中访问c: foreach项目中隐藏的proMap值 我能做到吗?

  • 我有数据 我正试图选择它与J汤。 但这不起作用。 我在字符串auth_token=处收到空指针异常。 java.lang.crime.ic.Main.main(Main.java: 2) 我做错了什么?

  • XML文档: 我正在尝试获取所有合同ID和所有相关的期间编号。所以输出应该如下所示: 现在,我只得到: 这是我的代码: 有人知道我如何解决这个问题,使其显示所有合同ID和相关的期间编号吗? 如果有人能帮我,我将不胜感激。提前感谢! 编辑:Marcus让我先添加通过vdsData循环的版本。这是我的代码: 不幸的是,这只会产生以下结果: 而不是: 添加了vtd xml作者解决方案的稍微修改版本(以使

  • 问题内容: 我想在使用写入密码时屏蔽我的密码。我将Linux GCC用于此代码。我知道一种解决方案是使用这样的功能 但是问题是这样不包括文件,对我没用。有没有人有办法解决吗? 问题答案: 在Linux世界中,屏蔽通常不是用星号完成的,通常回显只是关闭,并且终端显示空白,例如,如果您使用或登录虚拟终端等。 有一个用于获取密码的库函数,它不会用星号掩盖密码,但会禁止将密码回显到终端。我从一本Linux

  • 问题内容: 我知道命令行界面(例如Git等)能够隐藏用户的输入(对于密码有用)。有没有办法用Java编程地做到这一点?我正在从用户那里输入密码,我希望他们的输入在该特定行(而不是所有用户)上被“隐藏”。这是我的代码(尽管我怀疑这会有所帮助…) 问题答案: 尝试。不过,您至少必须运行Java 6。 请注意,这不适用于Eclipse控制台。您必须从 真实的 console / shell / term