Jquery AJAX—如果POST正在运行,则不要执行GET请求
我有一个文本框,你可以在那里打字。文本框不断地从数据库获取数据。用户可以在文本框中键入内容,并将其保存在Jquery AJAX—如果POST正在运行,则不要执行GET请求,jquery,ajax,Jquery,Ajax,我有一个文本框,你可以在那里打字。文本框不断地从数据库获取数据。用户可以在文本框中键入内容,并将其保存在keyup上的数据库中。问题是,有时当我键入时,它会被数据库的GET请求所取代,这将取代文本区域的值 我想要实现的是,当用户正在键入,并且在keyup函数上发生POST请求时,GET请求被取消。当用户未键入时,GET请求将继续 我的代码: function timers() { tmrAjax = setInterval(function () {
keyup
上的数据库中。问题是,有时当我键入时,它会被数据库的GET请求所取代,这将取代文本区域的值
我想要实现的是,当用户正在键入,并且在keyup
函数上发生POST请求时,GET请求被取消。当用户未键入时,GET请求将继续
我的代码:
function timers() {
tmrAjax = setInterval(function () {
$.get('<?php echo base_url('home/get') ?>', function (html) {
$("[name=text]").attr('id', 'text');
$("#text").val(html);
// $("#text").removeAttr("disabled");
});
}, 1000);
}
timers();
$(window).blur(function () {
clearInterval(tmrAjax);
$("#text").removeAttr("id");
// $("#text").attr("disabled", "disabled");
}).focus(timers);
$(document).ready(function () {
$("#text").keyup(function () {
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>home/save",
data: "text=" + $("#text").val()
//onsuccess
//onerror
//etc
});
});
});
函数计时器(){
tmrAjax=setInterval(函数(){
$.get(“”,函数(html){
$(“[name=text]”。attr('id','text');
$(“#text”).val(html);
//$(“#文本”).removeAttr(“禁用”);
});
}, 1000);
}
计时器();
$(窗口).blur(函数(){
clearInterval(tmrAjax);
$(“#text”).removeAttr(“id”);
//$(“#text”).attr(“禁用”、“禁用”);
}).焦点(计时器);
$(文档).ready(函数(){
$(“#文本”).keyup(函数(){
$.ajax({
类型:“POST”,
url:“主页/保存”,
数据:“text=”+$(“#text”).val()
//成功
//一个错误
//等
});
});
});
谢谢你的帮助 在这种情况下,您应该将get放入“on success”函数中,这样它将被同步。但是只有在发生
keyup
事件时才会发生onsuccess
。如果用户刷新页面并且没有键入任何内容,则除非发生keyup
事件,否则它不会显示数据库中的任何新数据。那么,我迷路了,从数据库中检索和最终显示的是什么。对于任何混淆,我深表歉意。GET每隔一秒钟进行一次,并检查数据库中的新数据。如果修改数据或添加新数据,文本框的值将替换为新数据。你看,你可以在文本框中输入,数据可以直接从文本框中编辑并保存在数据库中。当有键控功能时,会发生POST。GET在页面加载时发生。如果我将GET放在success上的中,则GET不会发生,除非用户键入某些内容。好的,您可以创建一个函数,在该函数中放置GET并在success函数中使用。这样,您就可以初始化文本框以显示数据库中的内容。而且,据我所知,你不应该每秒钟都打电话。如果我是对的,你的“获取”与你从“帖子”中存储的信息是相同的,也就是说,只有当“帖子”发生时,你才应该“获取”。不是每一秒!