gpt4 book ai didi

javascript - 在 jquery.ajax 中重新使用变量

转载 作者:行者123 更新时间:2023-11-28 16:34:29 25 4
gpt4 key购买 nike

我有以下功能。在表单提交时使用 setTimeout 调用此函数。

function get_progress( fileID, filename) {
$.ajax({
url: filename,
type: 'HEAD',
success: function() {
$.ajax({
type: 'POST',
url: 'read_file.php',
data: 'filename=' +filename,
success: function(html) {
document.getElementById(fileID).innerHTML = html + ' <img src="images/loading.gif" />'
setInterval("get_progress(fileID,filename)",400);
}
});
}
});}

一旦成功触发 setInterval,我就会遇到错误。看起来 fileID 和 filename 是空变量,尽管在​​代码达到成功状态之前它们已经有值。

为什么会发生这种情况?我是否必须将它们分配为全局变量?

最佳答案

这不起作用,因为带有字符串的 setInterval 会在全局范围内评估代码。您需要使用匿名函数来完成此操作,这会创建一个闭包:

setInterval(function() {
get_progress(fileID,filename);
} ,400);

来自MDN documentation for window.setInterval :

This syntax [a string of code] is not recommended for the same reasons that make using eval() a security risk.

关于javascript - 在 jquery.ajax 中重新使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com