Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery AJAX—如果POST正在运行,则不要执行GET请求_Jquery_Ajax - Fatal编程技术网

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函数中使用。这样,您就可以初始化文本框以显示数据库中的内容。而且,据我所知,你不应该每秒钟都打电话。如果我是对的,你的“获取”与你从“帖子”中存储的信息是相同的,也就是说,只有当“帖子”发生时,你才应该“获取”。不是每一秒!