首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ajax成功中调用(‘keyup’)

如何在ajax成功中调用(‘keyup’)
EN

Stack Overflow用户
提问于 2021-08-20 10:50:31
回答 1查看 62关注 0票数 1

我试图通过ajax调用基于返回的json数据进行实时搜索,这是我尝试过的,但不幸的是它不起作用

代码语言:javascript
复制
function returnVistors(){
    
    k = '';    
    $.ajax({
        type:'GET',
        url:'/vistors/list',
        success:function(data){
            const visitors = data.visitors
            const searchInput = document.getElementById('search_visitors').value;
            if(searchInput.length > 0){
                $('#search_visitors').on('keyup',function(){
                for(i = 0;i < visitors.length; i++){
                    const full_name = visitors[i]['full_name'].toLowerCase();
                    if(full_name.incudes(searchInput)){
                        k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
                    }
                    
                    k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
                }
            });
            }
            else{
    
          for(i = 0;i < visitors.length; i++){
            const id = visitors[i]['id']
            const detail_url = '{% url "vistors:vistor_obj" id=1111 %}'.replace(/1111/,parseInt(id));
            k+='<a href="'+detail_url+'" class="flex  hover:bg-purple-900 hover:text-white  items-center border rounded-xl mt-1 p-2"></a>';
            k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
          }
            
          document.getElementById('visitors_results').innerHTML = k   
        }

    
        },

      });
      
}
代码语言:javascript
复制
        <div class="mt-10 p-2 header rounded-xl md:rounded-tr-none md:rounded-tl-none rounded-bl-xl rounded-br-xl w-full  md:w-2/12 h-96 md:h-screen">
            <div class="p-3 bg-white rounded-xl">
                <button class="text-lg focus:outline-none"><i class="bi bi-search"></i></button>
                <input type="text" class="w-11/12 focus:outline-none" name="search_visitors" id="search_visitors" placeholder="search here">
            </div>

            <div id="visitors_results" class="p-3 bg-white rounded-xl mt-4 md:mt-5 p-2 overflow-y-scroll" style="height: 90%;">
                <div class=" flex justify-center items-center" id="spinner">
                    <div class="animate-spin rounded-full h-10 w-10 border-b-2 border-gray-900"></div>
                  </div> 
            </div>
            
        </div>

有没有可能在ajax success!中创建一个新函数?谢谢你让我知道

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 11:11:10

您应该在keyup事件处理程序中进行ajax调用,而不是相反,这只会造成混乱。

你可以参考下面的代码,看看如何做到这一点。

代码语言:javascript
复制
$('#search_visitors').on('keyup',function(){
    
    const searchInput = document.getElementById('search_visitors').val();

    if(searchInput.length > 0){
        $.ajax({
            type:'GET',
            url:'/vistors/list',
            success:function(visitors){

                if(visitors.length>0){
                    for(i = 0;i < visitors.length; i++){
                        const full_name = visitors[i]['full_name'].toLowerCase();
                        if(full_name.incudes(searchInput)){
                            k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
                        }
                        
                        k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
                    }
                }    
                else
                {
                    for(i = 0;i < visitors.length; i++){
                        const id = visitors[i]['id']
                        const detail_url = '{% url "vistors:vistor_obj" id=1111 %}'.replace(/1111/,parseInt(id));
                        k+='<a href="'+detail_url+'" class="flex  hover:bg-purple-900 hover:text-white  items-center border rounded-xl mt-1 p-2"></a>';
                        k+='<p class="mr-2">'+visitors[i]['full_name'] + ' - '+ visitors[i]['city']+'</p>'
                    }
                
                    document.getElementById('visitors_results').innerHTML = k   
                }

            },
        })
    }
    
});

此外,当您将传入数据命名为data时,还会在成功函数回调中引用visitors变量

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68861040

复制
相关文章

相似问题

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