javascript - Jquery ajax 仅在第一次运行

标签 javascript jquery html ajax

我在 jquery 中使用 ajax post 来构建页面的一部分。但问题是它只运行一次。下面是我的代码

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
      var res;
      function on(id){
        var dat = '';
        $.ajax({
          url: 'ajax.php', //This is the current doc
          type: "GET",
          data: {a: id },
          success: function(data){
            res = data;
            data += '<div class="white" id="white" style="display:none">'; 
            var result = $.parseJSON(res);
            $.each(result, function(k, v) {
              //display the key and value pair
              dat += "<a href = 'javascript:void(0);' onclick='on("+ k +")'>"+ v+"</a><br>";
            });
            document.write(dat);
          }
        }); 
      }
    </script>

  </head>
  <body>
    <a href="javascript:void(0);" onclick="on(8);">Get JSON data</a>
  </body>
</html>

第一次点击后,页面在显示结果后继续加载。第二次单击后,它显示错误 ReferenceError: on is not Defined

实际上,每次点击 href id 都会传递到 jquery 函数中,并基于运行返回数据并显示新页面数据的 SQL 查询。每次点击 href 时都会发生这种情况。

最佳答案

您确实应该重新考虑您的事件处理:

$(function() {
  var res;
  $(".getJson").click(function (e) {
    e.preventDefault();
    var dat = '';
    var id = $(this).data(id);
    $.ajax({
      url: 'ajax.php', //This is the current doc
      type: "GET",
      data: {a: id},
      success: function(data) {
        res = data;
        data += '<div class="white" id="white" style="display:none">';
        var result = $.parseJSON(res);
        $.each(result, function(k, v) {
          //display the key and value pair
          dat += "<a href = 'javascript:void(0);' onclick='on(" + k + ")'>" + v + "</a><br>";
        });
        $("#output").append(dat);
      }
    });
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<a href="javascript:void(0);" data-id="8" class="getJson">Get JSON data</a>
<span id="output"></span>

关于javascript - Jquery ajax 仅在第一次运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355223/

相关文章:

javascript - 带有可滚动下拉菜单的输入字段

javascript - 如何从 Vue.js 功能组件发出事件?

javascript - 表单提交不能正确使用 jquery

html - Bootstrap 表格 : Custom file button working but not showing name of uploaded file

javascript - 如果字符串的任何变体在 URL 中匹配,则返回 true

javascript - 使用 ajax get 从 google 电子表格中检索数据

javascript - 我试图将我的 sportsPerson 格式化为仅大写的第一个字母

javascript - 如果元素位于另一个对象数组中,则删除对象数组内包含数组的对象属性

javascript - 加法赋值 += 表达式中的行为

javascript - 使用 javascript/jquery 从 json 变量获取 json 字符串名称