首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在key函数中,尽管使用了codeigniter活动记录区分查询,但名称exist仍然返回多个相同的值。

在key函数中,尽管使用了codeigniter活动记录区分查询,但名称exist仍然返回多个相同的值。
EN

Stack Overflow用户
提问于 2013-07-29 09:07:47
回答 1查看 850关注 0票数 0

如果课程名称已经存在,我已经使用ajax的key函数在我的数据库中签入了。在找到匹配后,将向用户显示一个提示。我在模型中使用了不同的查询,然后控制器将正确的值返回给ajax,但是返回的值被复制,甚至返回多个值,导致页面中的弹出消息也会多次显示。这是怎么回事?谢谢help.Here是我的密码

视图(Javascript):

代码语言:javascript
运行
复制
<script>
var typingTimer;
var doneTypingInterval = 3000;


$('#course_name').keyup(function(){
typingTimer = setTimeout(check_course_name_exist, doneTypingInterval);

});


$('#course_name').keydown(function(){
clearTimeout(typingTimer);

});



function check_course_name_exist()
   {

   var course_name=$("#course_name").val();

    var postData={
    'course_name':course_name
   };


    $.ajax({
        type: "POST",
        url: "<?php echo base_url();?>courses/check_course_name_existince",
        dataType:'json',
        data: postData,
        success: function(data)
        {


        if(data.msg == 'Exist')
        {
         console.log(data.msg);
         $("#alert_exist").fadeIn(100);
         $("#alert_exist").delay(3000).fadeOut(1000);
         var a = 0;
         $("input[type=radio][value=" + a + "]").attr("disabled",true);
         document.getElementById('course_desc').disabled=true;
         document.getElementById('userfile').disabled=true;
         document.getElementById('is_public').disabled=true;
         document.getElementById('submit').disabled=true;


        }

        else
         {
         console.log(data.msg);
         var a = 0;
         $("input[type=radio][value=" + a + "]").attr("disabled",false);
         document.getElementById('course_desc').disabled=false;
         document.getElementById('userfile').disabled=false;
         document.getElementById('is_public').disabled=false;
         document.getElementById('submit').disabled=false;


         }



        }
    });
   </script>

主计长:

代码语言:javascript
运行
复制
function check_course_name_existince()
{
$course_name = $this->input->post('course_name');
$session_id = $this->session->userdata('username');
$result = $this->
course_booking_model->check_course_name_exist($session_id,$course_name);

if($result)
    {


        $msg="Exist";
    }
    else
    {

        $msg="Available";
    }


echo json_encode(array('msg'=>$msg));
}

型号:

代码语言:javascript
运行
复制
function check_course_name_exist($tennant_id,$course_name)
{
  $where = array(

        'tennant_id'  => $tennant_id,
        'course_name' => $course_name

  );
    $this->db->distinct();
    $this->db->select('course_name');
    $this->db->where($where);
    $this->db->group_by('course_name');
    $query=$this->db->get("courses");


  if($query->num_rows()>0)
    {
       return true;
    }
    else
    {
        return false;
    }
}

图像输出:

控制台日志函数返回两个相同的值,结果是2条消息弹出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-29 10:05:09

尝试在设置新的超时之前添加一些检查,以防止ajax调用中出现多个触发器。

代码语言:javascript
运行
复制
var typingTimer = null;
var doneTypingInterval = 3000;

$('#course_name').keyup(function () {
    if (!typingTimer) {
        typingTimer = setTimeout(check_course_name_exist, doneTypingInterval);
    }

});

$('#course_name').keydown(function () {
    if (typingTimer) {
        clearTimeout(typingTimer);
        typingTimer = null;
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17919984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档