首页 > 解决方案 > 在 $.when 之后更改 URL

问题描述

当我运行以下代码时,我的控制台将按预期显示“HERE”,然后是我的数据对象,然后是“DONE”。

var promises = [];
promises.push(getData('XYZ', function (data) {
  console.log(data);
}));
console.log('HERE');
$.when.apply($, promises).done(function () {
  console.log('DONE');
});

但是当我执行以下操作时,它返回“HERE”,然后是一个数据对象,然后是“DONE”,页面被重定向。为什么我的对象是空的?

var promises = [];
promises.push(getData('XYZ', function(data) {
  console.log(data);
}));
console.log('HERE');
$.when.apply($, promises).done(function() {
  console.log('DONE');
  window.location.replace("/")
});

我知道我可以在回调中进行重定向,但我很好奇为什么这不起作用。我的 getData() 函数如下。没有记录错误。

function getData(id, callback) {
  var url = "/api/id/" + id;
  console.log(url);
  return $.ajax({
    type: 'GET',
    url: url,
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    success: function (result) {
      callback(result);
    },
    error: function (error) {
      console.log(error);
    }
  });
}

标签: jquerypromiseurl-redirection

解决方案


推荐阅读