在 laravel 中搜索自动完成 ajax

Posted

技术标签:

【中文标题】在 laravel 中搜索自动完成 ajax【英文标题】:search autocomplete ajax in laravel 【发布时间】:2021-11-30 08:37:36 【问题描述】:

我正在使用ajax进行实时搜索,但问题是它只显示一个结果

当我使用 .html() 但当我使用 append() 时它可以工作,但我写的每个单词都是为了复制结果,

这是我的代码:

在控制器中,

   $patient = Patient::select('id', 'avatar')
        ->where('phone_number', 'like', '%' . $search_query . '%')
        ->orWhere('first_name', 'like', '%' . $search_query . '%')
        ->limit(15)
        ->get();
        return $patient;

刀片中的ajax代码

    $("#search-eng").keyup(function() 
        let search_query = $(this).val();
        if (search_query != "") 
            $.ajax(
                url: ' url('/appointment/calander_patient_search') /' +
                    search_query,
                type: "GET",
                dataType: "json",
                success: function(data) 
                    $("#search-eng-show-list").show();

                    if (data !== "") 

                        $.each(data, function(key, value) 

                            $('#search-eng-show-list').html(

                                '<a data-id="' + value.id + '"' value.second_name + '</a>');
                        );
                    
                    if (data == "") 
                        $('#search-eng-show-list').html(
                            '<a><i "></i>No Record</a>'
                        );
                    
                ,
            );
         else 
            $("#search-eng-show-list").empty();
            $("#search-eng-show-list").hide();;
        
    );

【问题讨论】:

【参考方案1】:

是的,您在循环语句中设置了内容,因此它只会采用最后一个内容。

你可以使用一些缓冲区变量:

if (data !== "") 
   var html = '';

   $.each(data, function(key, value) 
       html += '<a data-id="' + value.id + '"' value.second_name + '</a>');
   

   $('#search-eng-show-list').html(html);

   // ....

【讨论】:

非常感谢,它运行良好。很抱歉问,但是什么更好,使用上面的搜索引擎或通过控制器发送所有结果,包括 HTML,然后将它们传递给 div? 最好还是发送 JSON,然后你的前端可以轻松地操作它们。最好使用一些 JS 框架(VueJS、React...),它们具有数据绑定功能,可以让您更轻松地操作 JSON 数据。 jQuery 有点过时了。 感谢您的帮助,我很快就会学习它们。

以上是关于在 laravel 中搜索自动完成 ajax的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 手动自动完成搜索,如何将信息传递给视图中的 div

在 Laravel 5.5 中使用 Typeahead.js 使用两个表格列进行自动完成搜索

浏览器自动完成/保存的表单在 ajax 请求中不起作用

输入字段自动完成搜索选择名称并将id存储在输入框laravel

Laravel 5 异步 AJAX 请求导致会话问题

Laravel 在相关表中多次搜索