javascript - AJAX 调用仅在第一个链接中触发,不会在 for 循环内的任何其他链接中触发

标签 javascript jquery python ajax

我在为 Python Flask 应用程序中 for 循环内的所有链接实现 AJAX 调用时遇到问题。

只有第一个链接会触发AJAX调用,其他链接不会触发AJAX调用。

下面是我实现的相应 .html 和 .js 文件的代码。

.html

{% for article in articles %}
  {% if article._id in likes %}
    <button data-toggle="tooltip" title="Unlike" id="unlike-button" value="{{article._id}}"><span id="user-like-recommend" class="glyphicon glyphicon-heart" aria-hidden="true"></span></button>
  {% else %}
    <button data-toggle="tooltip" title="Like" id="like-button" value="{{article._id}}"><span id="user-like-recommend" class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span></button>
  {% endif %}
{% endfor %}

.js

document.getElementById("like-button").addEventListener("click", function(e)    {
e.preventDefault();
var article = $('#like-button').val();
var data = {"article": article};
console.log(data);
if(data){
  $.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: '/article_liked',
    dataType : 'json',
    data : JSON.stringify(data),
    success: function (response) {
      success("Article was successfully liked.");
    }

我应该怎么做才能解决这个问题?

最佳答案

将id改为类,id必须唯一

{% for article in articles %}
  {% if article._id in likes %}
    <button data-toggle="tooltip" title="Unlike" class="unlike-button" value="{{article._id}}"><span id="user-like-recommend" class="glyphicon glyphicon-heart" aria-hidden="true"></span></button>
  {% else %}
    <button data-toggle="tooltip" title="Like" class="like-button" value="{{article._id}}"><span id="user-like-recommend" class="glyphicon glyphicon-heart-empty" aria-hidden="true"></span></button>
  {% endif %}
{% endfor %}

js:

$(".like-button").on("click", function(e)    {
e.preventDefault();
var article = $(this).val();
var data = {"article": article};
console.log(data);
if(data){
  $.ajax({
    type: 'POST',
    contentType: 'application/json',
    url: '/article_liked',
    dataType : 'json',
    data : JSON.stringify(data),
    success: function (response) {
      success("Article was successfully liked.");
    }

关于javascript - AJAX 调用仅在第一个链接中触发,不会在 for 循环内的任何其他链接中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505235/

相关文章:

php - 如何在 javascript 中访问多维 PHP 数组作为 json 编码的变体?

javascript - 使用文本 jquery 将值输入从一个传递到另一个

jquery - 从 ASP.NET 中的母版页或默认页链接到 jquery 脚本文件

python - 我应该将正在测试的函数包含在unittest文件中,还是应该将其导入unittest文件中?

python - Django/Python 应用程序的数据库引擎选择

python - 在pandas中读取csv时自动确定标题行

javascript - 查找以两个数字和一个字母开头的字符串

javascript - Angular Kendo Dropdownlist 自动添加空白选项

javascript - 如何更改点击时的href值

javascript - jQuery.insertBefore 不遵守换行符