【问题标题】:jQuery $.when, then, multiple AJAX requests, and promisesjQuery $.when,然后,多个 AJAX 请求和承诺
【发布时间】:2017-12-08 08:58:02
【问题描述】:

经过广泛的网络搜索和多年未能理解文档并找到替代解决方案后,我来找你问我应该如何解决我的问题。

注意:每个 AJAX 请求都有一个独特的成功函数。

建议的类似问题之一是 - How to loop through Ajax Requests inside a JQuery When - Then statment? - 这是否与我需要的相似,尽管与我独特的成功回调不兼容?

$.when(

  $.ajax({
    url: '/-.json',
    method: 'get',
    dataType: "jsonp",
    complete: function(r) {

      //my stuff

    }
  }),

  $.ajax({
    url: '/-.json',
    method: 'get',
    dataType: "jsonp",
    complete: function(r) {

      //my stuff

    }
  })

).then(function() {

  console.log('leggo');

});

我的解决方案基于 CSS-Tricks article,但 console.log 从未被触发,尽管 AJAX 请求是。

谢谢

【问题讨论】:

  • 如果这些是静态 json 资源,则不太可能将它们设置为返回 jsonp。外部数据结构是什么样的?如果它们是远程 api 调用,请确保 api 服务于 jsonp。检查浏览器开发工具网络中的实际请求以获取线索
  • @charlietfl 这不是 JSON —— 以前我是在发出单独的请求,等等。
  • 所以每个请求都使用完全相同的$.ajax 工作?
  • @charlietfl 是的 :) 他们仍然工作并且每个成功事件都正确运行,但是 jQuery 假装没有什么时候/那么
  • 和相同的 jQuery 版本?添加一些错误处理,看看会告诉你什么

标签: javascript jquery ajax


【解决方案1】:

正如@charlietfl 建议的那样,答案是dataType。我不知道为什么,但是从 jsonp 更改为 json 就是答案。它们显然不仅仅是明显的情境用法不同。

【讨论】:

  • jsonp 是一种非常不同的请求类型,它需要返回一个函数,而请求本身实际上是一个脚本请求,而不是 xmlHttpRequest (ajax)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 2014-05-30
  • 1970-01-01
  • 2013-09-24
  • 2014-04-15
  • 2019-06-09
相关资源
最近更新 更多