Jquery / Ajax有时会失败

时间:2017-10-24 16:07:10

标签: javascript jquery ajax

一直致力于一个小项目。出于某种原因,有时我的Ajax / JQuery函数不会执行。

例如,我有一个按钮,一旦你点击它,就会从员工姓名的SQL生成一个自动选择/选项列表。我正在设置它:

$("#search_prospects_image").one('click', function() {
  var blankData;
  $.post('get_prospects.php', blankData, processData);

  function processData(data) {
    var prospect_names = JSON.parse(data);
    var select = document.getElementById("search_prospects_image");

    for (var i = 0; i < prospect_names.length; ++i) {
      var option = document.createElement("option");
      option.text = prospect_names[i];
      option.value = prospect_names[i];
      select.appendChild(option);
    }
  }
});

有时,当我单击按钮并尝试选择一个选项时,它不会列出任何内容。我需要刷新页面,或者点击其他内容,然后再回到它。

我无论如何都不是专家 - 相当新的,所以如果我做错了,我也不会感到惊讶。

如果任何人都可以看到任何可能会减慢这些呼叫的速度,或者有时会让他们失败,我很想知道!谢谢!

1 个答案:

答案 0 :(得分:3)

您正在使用one()

  

Description: Attach a handler to an event for the elements. The handler is executed at most once per element per event type

所以它只会在第一次点击时触发。

您可能需要on()

  

Description: Attach an event handler function for one or more events to the selected elements

所以它会在每次点击时执行调用。

至于你的代码;我只想反映一个变化:

$("#search_prospects_image").on('click', function() {
  var blankData;
  $.post('get_prospects.php', blankData, processData);

  function processData(data) {
    var prospect_names = JSON.parse(data);
    var select = document.getElementById("search_prospects_image");

    for (var i = 0; i < prospect_names.length; ++i) {
      var option = document.createElement("option");
      option.text = prospect_names[i];
      option.value = prospect_names[i];
      select.appendChild(option);
    }
  }
});