javascript - jQuery ajax请求和html只显示一次数据

标签 javascript jquery html ajax

美好的一天!

我有一个问题,当我单击ajax请求按钮时,它工作正常并在我选择的项目上显示数据,但是,当我再次单击ajax请求按钮时,这给出了数据(这是正确)但在我选择的项目上再次显示数据,因此,我有两次相同的数据,我该如何解决这个问题?我是 JS 新手,这是我的学校项目哈哈,所以如果你能帮助我,非常感谢! <3

这是我的js代码

  $("#hola").click( function(e) {
  e.preventDefault();
  $.ajax({
    method: 'GET',
    url: '/api/check-estudio/',
    data: {},
    dataType: 'json',
    cache: true,
    success: function(data) {
      for (var i=0; i<data.length; i++) {
        console.log(data[i]);
        var optionHTML = '<option>' + data[i].name + '</option>';
        $(".selectEstudio").append(optionHTML);
      }
    },
    error: function(xhr, resp, text) {
      console.log(xhr, resp, text);
    }
  });

当我第一次单击时,工作完美,并在选择框中显示我的数据并显示选项。 Picture 1

当我关闭模态并再次单击显示模态和ajax请求的按钮时,显示两次相同的信息。 enter image description here

感谢您的宝贵时间! <3

最佳答案

使用 .html() 代替 .append() 并进行一些代码增强:-

var optionHTML =''; // define variable
for (var i=0; i<data.length; i++) {
    optionHTML += '<option>' + data[i].name + '</option>'; // add all options
}
$(".selectEstudio").html(optionHTML); // append in last not inside loop one-by-one

或者你可以先empty()选择框,然后再次添加:-

var optionHTML ='';
 $(".selectEstudio").empty();
for (var i=0; i<data.length; i++) {
    optionHTML += '<option>' + data[i].name + '</option>';
}
$(".selectEstudio").html(optionHTML);

关于javascript - jQuery ajax请求和html只显示一次数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361286/

相关文章:

html - <img> 标签中是否需要文件扩展名?

html - 0.1 rem border-width 在 chrome 和 safari 上呈现不同

javascript - 是否可以一步创建一个数组并推送内容

javascript - 查询 arcgis 并获取按距某个点的距离排序的结果

javascript - 如何在Javascript中计算多个动态输入字段的总和?

javascript - 如何在没有大量代码的情况下操作单个输入字段值

javascript - JQuery:当元素隐藏时防止div折叠()

javascript - 使用 javascript 的级联下拉菜单不起作用

javascript - 使用 jquery 的简单 .animate

asp.net - 如何构建专门的 JQuery 计时器