简体   繁体   English

Laravel 自动完成搜索与 sql 存储过程不起作用

[英]Laravel autocomplete search with sql stored procedure not working

I have a search field with id_registrasi with some values.我有一个带有 id_registrasi 的搜索字段,其中包含一些值。 I don't know if its a problem but i work with sql stored procedure and laravel query builder to call table in the database.我不知道这是否有问题,但我使用 sql 存储过程和 laravel 查询构建器来调用数据库中的表。 I'm trying to return it and its works fine, but not when i work with view blade.我正在尝试退回它并且它工作正常,但当我使用视图刀片时却不行。 This is my code so far:到目前为止,这是我的代码:

Routes路线

Route::get('/rj/cari/index', [RJController::class, 'indexCari']);
Route::post('/rj/cari', [RJController::class, 'cari'])->name('cari');

Controller Controller

    public function indexCari()
{
    return view('rjs.rj-input');
}

public function cari(Request $request)
{
    $search = $request->search;

    if ($search == '') {
        $results = DB::select("EXEC sp_kasir_daftar_harian_pasien_detail 
        @tgl='2021-11-21',
        @id_jenis_transaksi=1,
        @kd_cara_bayar=1
        ");
    }

    $response = array();
    foreach ($results as $r) {
        $response[] = array(
            "label" => $r->id_registrasi, "value" => $r->id_pasien, "value1" => $r->nm_pasien, "value2" => $r->alamat,
            "value3" => $r->nm_cara_bayar, "value4" => $r->nm_jaminan, "value5" => $r->total_biaya,
            "value6" => $r->nm_status_bayar
        );
    }

View Blade:查看刀片:

   <script type="text/javascript">

var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');

$(document).ready(function(){ $(文档).ready(函数(){

 $( "#id_registrasi" ).autocomplete({
    source: function( request, response ) {
       // Fetch data
       $.ajax({
         url:"{{route('cari')}}",
         type: 'post',
         dataType: "json",
         data: {
            _token: CSRF_TOKEN,
            search: request.term
         },
         success: function( data ) {
            response( data );
         }
       });
    },
    select: function (event, ui) {
      // Set selection
      $('#id_registrasi').val(ui.item.label); // display the selected text
      $('#id_pasien').val(ui.item.value); 
      $('#nm_pasien').val(ui.item.value1);
      $('#alamat').val(ui.item.value2);
      $('#nm_cara_bayar').val(ui.item.value3);
      $('#nm_jaminan').val(ui.item.value4);
      $('#total_biaya').val(ui.item.value5);
      $('#nm_status_bayar').val(ui.item.value6);
      return false;
    }
 });
});

When return $response;返回 $response; it works fine.它工作正常。 I get the result.我得到结果。 But when return response()->json($response);但是当返回 response()->json($response); i get jquery.min.js:2 POST http://127.0.0.1:8000/rj/cari 500 (Internal Server Error) when i try to fill the input form for search.当我尝试填写搜索输入表单时,我得到jquery.min.js:2 POST http://127.0.0.1:8000/rj/cari 500(内部服务器错误) Please help?请帮忙?

have you try to catch your error at the ajax syntax and console.log it?您是否尝试在 ajax 语法和 console.log 中发现错误?

    public function cari(Request $request)
{

    $search = $request->search;

    if ($search == '') {
        $results = DB::raw("SET NOCOUNT ON;EXEC sp_kasir_daftar_harian_pasien_detail 
        @tgl='2021-11-21',
        @id_jenis_transaksi=1,
        @kd_cara_bayar=1
        ");
    }

    $response = array();
    foreach ($results as $r) {
        $response[] = array(
            "label" => $r->id_registrasi, "value" => $r->id_pasien, "value1" => $r->nm_pasien, "value2" => $r->alamat,
            "value3" => $r->nm_cara_bayar, "value4" => $r->nm_jaminan, "value5" => $r->total_biaya,
            "value6" => $r->nm_status_bayar
        );
    }

    return response('success', 200);

@Atoli Gaming added return response('success', 200) and its still not working, either with response(json_encode($response),200) @Atoli Gaming 添加了 return response('success', 200) 并且它仍然无法正常工作,无论是 response(json_encode($response),200)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM