【发布时间】:2013-12-03 17:01:58
【问题描述】:
我有一些代码在按键上执行,并在用户键入时将数据保存到数据库中。
我添加了一个 setTimeout 函数,它前面有一个 clearTimeout,所以用户输入的每个字符都不会发送 Ajax 请求来保存数据。
虽然 setTimeout 对一个输入字段非常有效,但如果用户决定快速切换输入字段(在 setTimeout 延迟结束之前),传递给 callSomeAjax 的参数会在函数执行之前发生变化。
正在发生的事情的简化版本...
var a = 1; //some user data
//function to call ajax script to save data to database
function callSomeAjax(a)
{
console.log(a);
}
setTimeout(function(){callSomeAjax(a)},1000); //executes callSomeAjax after 1 second delay
a=3; //change user data before callSomeAjax executes
// Result of console.log is 3, not 1 like I want it to be...
有什么想法吗?
【问题讨论】:
-
您是尝试为每个输入字段进行单独的 ajax 更新,还是 1 次 ajax 调用将整个表单保存到数据库?
-
不要使用全局 setTimeout,只要在用户开始输入时创建一个,在用户输入的输入范围内?
标签: javascript settimeout