javascript - 错误的参数被设置为在成功的 jquery $.ajax get 上运行

标签 javascript jquery ajax

我有一个数组,用于存储一些需要下载的 XML 文件的 url。 成功后,需要处理这些文件。但这就是问题所在。 问题很明显:

for (var i = 0; i < loadMaps.length; i++){

    var currentMap = loadMaps[i];

    $.ajax({
      type: "GET",
      url: currentMap,
      dataType: "xml",
      success: function(xml, textStatus, error){
        processMap(xml, currentMap)
      }
    });
}

如您所见,它遍历数组并下载正确的 map 。太好了。

但是当文件下载完成时,另一个文件也正在下载!

因此 currentMap 变量发生了变化。

因此这将导致两个文件以相同的名称进行处理。这是错误的。

解决此问题的最佳方法是什么?

最佳答案

这是因为默认情况下 JQuery 将异步设置为 true。如果您需要特定顺序的所有内容,您需要将其设置为 false 或将所有内容存储在一个临时对象中,当所有 GET 完成时,该对象将按特定顺序处理。

关于javascript - 错误的参数被设置为在成功的 jquery $.ajax get 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3271522/

相关文章:

jquery - Ajax请求后如何重新生成jQuery Mobile样式?

javascript - 如何使用 for 循环发出多个 AJAX 请求

php - 任何方法都可以知道页面是否是通过 AJAX 调用的

javascript - 计算在多个下拉框中选择某个对象的次数

javascript - 如何取消挂起的 Jquery Ajax 调用?

jquery - 如何在 paginatorTemplate 中使用 {totalPages}?

javascript - 使用ajax在多个页面中发表帖子

Javascript 打印三 Angular 形无法按预期工作

javascript - innerHTML 无法将文本注入(inject)到标记中

javascript - 谷歌地图气球丢失样式