<分区>
我正在尝试创建一个触发 ajax 请求 onchange 的文本区域。 关键是我担心排队太多请求到服务器,因为该请求将把这个文本区域的内容保存在数据库中。 实际上,我的想法是创建一种计时器,在最后一次 onchange 几秒钟后,启动 ajax 请求以保存文本区域数据。 关键是我不知道这是否是个好主意,而且,我仍然没有想出要写下来的代码。 我正在使用 JQuery。
标签 javascript jquery ajax
<分区>
我正在尝试创建一个触发 ajax 请求 onchange 的文本区域。 关键是我担心排队太多请求到服务器,因为该请求将把这个文本区域的内容保存在数据库中。 实际上,我的想法是创建一种计时器,在最后一次 onchange 几秒钟后,启动 ajax 请求以保存文本区域数据。 关键是我不知道这是否是个好主意,而且,我仍然没有想出要写下来的代码。 我正在使用 JQuery。
最佳答案
您可以限制调用,基本思路是检查是否有计时器
var requestTimer;
$('#textarea').on('change', function() {
if (requestTimer) window.clearTimeout(requestTimer); //see if there is a timeout that is active, if there is remove it.
requestTimer = setTimeout(submitFormAjax, 1000); //delay before making the call
});
您还可以检查是否有 Ajax 请求处于事件状态。
var requestTimer;
var xhr;
$('#textarea').on('change', function() {
if (requestTimer) window.clearTimeout(requestTimer); //see if there is a timeout that is active, if there is remove it.
if (xhr) xhr.abort(); //kill active Ajax request
requestTimer = setTimeout(submitFormAjax, 1000); //delay before making the call
});
function submitFormAjax() {
xhr = $.ajax({
type:"POST",
url:"ajax.php",
data:$('#textarea').val(),
success:function(data) {
$("#result").html(data);
}
});
}
关于javascript - onchange 之后的 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568926/
相关文章:
javascript - 将数组从 Angular 传递到 php
javascript - JS 脚本无法理解通过 PHP 分配给 HTML 输入值的变量
javascript - 从 jQuery 加载 symfony 2 目录中的文件
javascript - 当通过更改 css 使 Div 可见时,该 div 上的事件将发生多次
javascript - 在悬停颜色上提交/更改多个innerHTML,使用键码
javascript - 在滚动导航栏上转到 slider 后面并且 slider 视差效果不起作用
javascript - clearInterval() 无法正常工作