遍历元素列表并通过Ajax发送数据

时间:2018-07-21 22:53:05

标签: javascript jquery ajax

我有一个 li 元素列表。每个 li 元素都包含一些文本段落。

要查看元素内容,我的应用应点击 li 元素,然后出现弹出窗口打开,应用程序将从弹出窗口中检索文本,然后使用 $。ajax 将其发布到服务器。

为此,我正在使用每种方法来逐一遍历所有 li 元素。 我的目的是找到每次等待的jquery或javascript方法,以便从li元素中检索信息,然后在使用ajax发布所有数据时,移至下一个li等。

listItem.each(function(index) {
  if (myCondition) {
    console.log('item with index: ' + index + ' is skipped');
  } else {
    listItem.click();
    setTimeout(function() { // Wait 1 second until the popup is opended
      popupWindow.animate({
        scrollTop: $(this).height()
      }, $(this).height() * 10, getData);

      function getData() {
        // ...
        // ...
        postData(data);
      }
    }, 1000);
  }
});

function postData(data) {
  $.ajax({
    type: 'POST',
    // ...
    // ...
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="myList">
  <li class="list-item">.......</li>
  <li class="list-item">.......</li>
  <li class="list-item">.......</li>
  <!-- ...... -->
</ul>

2 个答案:

答案 0 :(得分:0)

每个await呼叫都可以$.ajax。可以使用listItem.each循环,而不是for(它将循环迭代 ),该循环可以轻松实现 serial 异步。请注意,您必须在async函数内部才能使用await。例如:

(async () => {
  for (const li of $('.list-item')) {
    await $.ajax( ... )
  }
})();

答案 1 :(得分:0)

您可以递归地调用处理一个项目并在ajax promise resolve中传递<IfModule mod_authz_core.c> Require all denied 的函数,而不是循环

next()