首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在laravel中使用ajax正确实现简单的搜索功能?

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

Stack Overflow用户
提问于 2017-12-21 22:09:23
回答 3查看 322关注 0票数 3

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

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

我目前拥有的是这样的:

路由:

代码语言:javascript
复制
Route::get('/search-results', 'HomeController@search')->name('search');

HomeController中的search

代码语言:javascript
复制
 public function search(Request $request){
        $data = $request->data;
        return view('search-results')->with('data',$data);
    }

search-results视图

代码语言:javascript
复制
@extends('layouts.app')
    @section('content')
       <h1>{{$data}}</h1>
    @endsection

最后是ajax:

代码语言:javascript
复制
var data = "success";
        $.ajax({
            url: 'search-results',
            type: "get",
            data: {data : data},
            success: function(response){
                if(data == "success")
                    console.log(response);
            }
        });

有没有人能帮我解决这个问题?我不确定我做错了什么.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-21 22:24:26

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

操作:

代码语言:javascript
复制
public function search(Request $request){
    $data = $request->data;

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

JavaScript:

代码语言:javascript
复制
$.ajax({
    url: "/search",
    type: "get",
    data: {data : data},
    success: function(response){
        console.log(response);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2017-12-21 22:21:30

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

票数 0
EN

Stack Overflow用户

发布于 2017-12-29 15:14:01

路由:

代码语言:javascript
复制
Route::get('/search-results', 'HomeController@search')->name('search');

HomeController中的search

代码语言:javascript
复制
public function search(Request $request){
    $result = [];
    $result['data'] = $request->data;
    return response()->json($result);
}

search-results视图

代码语言:javascript
复制
@extends('layouts.app')
@section('content')
   <h1 class="header"></h1>
@endsection

Ajax调用:

代码语言:javascript
复制
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);
        }
});

希望对你有帮助!

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

https://stackoverflow.com/questions/47926714

复制
相关文章

相似问题

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