如何在laravel中使用ajax正确实现简单的搜索功能?

时间:2017-12-21 14:09:23

标签: php jquery ajax laravel laravel-5

我正在尝试为学习目的编写一个简单的搜索功能,但我无法使其正常工作。

我现在想要的只是使用ajax在刀片视图中传递一些数据(到控制器功能),然后通过相同的控制器功能在另一个视图中显示这些数据。

我现在拥有的是:

路线:

Route::get('/search-results', 'HomeController@search')->name('search');
search中的

HomeController

 public function search(Request $request){
        $data = $request->data;
        return view('search-results')->with('data',$data);
    }

search-results视图

@extends('layouts.app')
    @section('content')
       <h1>{{$data}}</h1>
    @endsection

最后是ajax:

var data = "success";
        $.ajax({
            url: 'search-results',
            type: "get",
            data: {data : data},
            success: function(response){
                if(data == "success")
                    console.log(response);
            }
        });

有人能帮助我做这项工作吗?我不确定我做错了什么......

3 个答案:

答案 0 :(得分:0)

AJAX调用是异步的,因此您可以进行调用并以单独的形式返回结果。如果您想以单独的形式显示结果,我建议您提交表单,然后返回包含数据return view('search-results')->with('data',$data);的视图,或者如果您坚持使用ajax调用,则会返回将发送的响应到从return response()->json(["data" => $data]);

提交数据的表单

答案 1 :(得分:0)

您应该将JsonResponse对象返回到JavaScript中的易用数据

动作:

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

    return new JsonResponse(compact('data'));
}

JavaScript的:

$.ajax({
    url: "/search",
    type: "get",
    data: {data : data},
    success: function(response){
        console.log(response);
    }
});

答案 2 :(得分:0)

路线:

Route::get('/search-results', 'HomeController@search')->name('search');
search中的

HomeController

public function search(Request $request){
    $result = [];
    $result['data'] = $request->data;
    return response()->json($result);
}

search-results视图

@extends('layouts.app')
@section('content')
   <h1 class="header"></h1>
@endsection

Ajax电话:

var data = "success";
$.ajax({
  url: "{{ route('search') }}",
  type: "get",
  data: {'data' : data},
  success: function(response){
        if(response.data == "success")
           console.log(response.data);
           $('.header').text(response.data);
        }
});

希望它对你有所帮助!!!