Javascript 我应该使用提交按钮、常规按钮或链接来执行此操作吗?

Javascript 我应该使用提交按钮、常规按钮或链接来执行此操作吗?,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我已经创建了一个注释提要,使用PHP中的while语句从MySQL数据库中检索。此操作的代码类似于以下代码: <? $con = mysqli_connect("localhost","username","password","database"); if (!$con) { die('Could not connect: ' . mysqli_connect_error()); } $query = "SELECT * FROM table ORDER BY timesta

我已经创建了一个注释提要,使用PHP中的while语句从MySQL数据库中检索。此操作的代码类似于以下代码:

<?

$con = mysqli_connect("localhost","username","password","database");

if (!$con)
{
  die('Could not connect: ' . mysqli_connect_error());
}


$query = "SELECT * FROM table ORDER BY timestamp DESC LIMIT 0 , 1000";

$comments = mysqli_query($con, $query);

echo "<h1>Recent Posts</h1><br><br><hr>";

while($row = mysqli_fetch_array($comments, MYSQLI_ASSOC))
{
  $comment = $row['comment'];
  $timestamp = $row['timestamp'];

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <img src='$file' style='width:60%; margin-left:20%; margin-right:20%; margin-top:5px; border-style:solid;'><br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";
  }

mysqli_close($con);

?>

您可以通过多种方式以专业且更具组织性的方式实现这一点,我一直使用
数据
属性来执行此类功能的javascript操作,例如:

<button type="button" class="js_vote" data-type="upvote" data-post="32323">Upvote</button>
或者,如果要使用
onclick
,则可以执行以下操作:

<a href="javascript:void(0);" onclick="js_vote('upvote',90239);">Upvote</a>
每个人在实施自己系统的布局/结构时都有自己不同的思维方式和逻辑,我向您推荐了一种简单易行的方法,您可以更好地组织数据


最后,您可以选择如何设计它。。相同的属性数据属性您可以将它们与锚定标记一起使用,甚至可以与div或span或任何您想要的标记一起使用。

我想这取决于您是想依赖javascript还是表单提交来完成操作

如果您不想使用Javascript提交表单,那么我会使用form方法

另一种方法是在表单中使用button元素(默认情况下按钮将提交表单)和“action”属性:

<form name="$postid" action="./upvote-comment.php" method="post">
  <button>Upvote Comment</button>
</form>

向上投票的评论
如果您想要/需要使用javascript,那么这取决于您想要使用浏览器定义的默认按钮样式还是链接样式。除了它的外观,我看不出使用链接和按钮会有什么不同

总之:

  • 表单是一个完全合理的非javascript解决方案
  • 按钮/链接“onclick”彼此等效

使用javascript可能更容易操作(因为您只需操作dom,而无需重新加载页面来更改计数器)。

使用按钮或
,具体取决于哪种样式更容易设置(它们的功能将是相同的)。在javascript函数中使用ajax来执行逻辑。

只要您能够通过某种方式将有意义的标识符传递给您的
likefunction()
,该标识符指示被提升的帖子,这些元素中的任何一个都可以工作

如果您希望在单击事件时从表单字段提交用户数据,则按钮和输入[submit]都很有用。但是在这种情况下,我猜这是没有必要的,因为您需要的所有信息都可以被注入到所操作元素的dom属性中


因此,真正的问题是哪一个元素对您来说是最简单的主题,并集成到您的dom结构中。就我个人而言,我会选择
,因为它需要最少的语法,但这就是我自己。

谢谢你这么好的回答。最后一个问题:为了实现您提到的第一个解决方案,我会在
标记中包含js吗?如果是这样,它是否应该在单击Upvote按钮时运行?作为测试,我这样做了,但添加了
document.getElementById('result').innerHTML=“test”到js,然后

到文件正文。作为测试,我这样做了,但添加了
document.getElementById('result').innerHTML=“test”到js,然后

到文件体。当我运行此程序时,单击Upvote按钮没有得到任何结果。您可以将该代码包含到脚本标记中,也可以包含在一些js文件中,这两个文件都可以使用。。。只要记得在文档就绪广告上初始化它,据我所知,我给你的代码应该可以正常工作,因为我已经多次使用过此类代码。请仔细检查你对代码所做的操作,并检查控制台的错误日志。如果有任何错误,请将其发布在这里。同时,你是否正在向服务器发送请求使用ajax?而

应该是

,因为uou正在javascript函数中重新引用结果。
function js_vote(type,post_id){
    // and from here perform the ajax request to send the data to the server.
}
<form name="$postid" action="./upvote-comment.php" method="post">
  <button>Upvote Comment</button>
</form>