jquery - 在 $.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);
}
});
}
解决方案
推荐阅读
- linux - 有没有办法将 bash 脚本中的标准输出存储到 GO 中的变量中?
- firebase - Firebase storage.rules 版本 2
- asp.net - 我可以从控制器接收数据,但不能通过 AJAX 调用 .NET CORE 从视图发送到控制器
- javascript - 在街景中显示 OverlayView 标记
- c - 如何让 makefile 正确识别多个目录中的包含
- python - Keras 错误与我只有一堂课有关
- javascript - Jquery 删除使用 .after 创建的元素
- redis - 如何在事务中选择性地执行多个更新(不是添加或更新)?
- java - Java 等价于 (p5.js) p5.Font.textToPoints() 函数
- node.js - 将我的 nodejs 程序捆绑并部署为可执行文件