有人可以用一个完整的最小示例来解释Laravel 5.3中的ajax post方法吗?我知道网络上有一些资源,但是我想念一个简洁,直接的最小示例。
我假设您对模型-控制器-视图范例有基本的了解,对Laravel的基本了解,以及对JavaScript和JQuery的基本了解(为简单起见,我将使用它们)。
我们将创建一个编辑字段和一个发布到服务器的按钮。(这适用于Laravel 5.0至5.6的所有版本)
首先,您需要将路由添加到您的 route / web.php中 。就像您从普通视图中知道的那样,为视图创建一条路线:
Route::get('ajax', function(){ return view('ajax'); });
您需要创建的第二条路由是处理ajax发布请求的路由。请注意,它正在使用 post 方法:
Route::post('/postajax','AjaxController@post');
在您创建刚才(第二)路线,控制器功能 后 在 AjaxController 被调用。因此创建控制器
php artisan make:controller AjaxController
并在 app / Http / Controllers / AjaxController.php中 添加包含以下行的函数 发布 :
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class AjaxController extends Controller { public function post(Request $request){ $response = array( 'status' => 'success', 'msg' => $request->message, ); return response()->json($response); } }
该函数已准备就绪,可以通过Http请求接收数据,并返回json格式的响应(包含状态“成功”和该函数从请求中获得的消息)。
在第一步中,我们定义了指向视图 ajax 的路由,因此现在创建视图 ajax.blade.php 。
<!DOCTYPE html> <html> <head> <!-- load jQuery --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <!-- provide the csrf token --> <meta name="csrf-token" content="{{ csrf_token() }}" /> <script> $(document).ready(function(){ var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content'); $(".postbutton").click(function(){ $.ajax({ /* the route pointing to the post function */ url: '/postajax', type: 'POST', /* send the csrf-token and the input to the controller */ data: {_token: CSRF_TOKEN, message:$(".getinfo").val()}, dataType: 'JSON', /* remind that 'data' is the response of the AjaxController */ success: function (data) { $(".writeinfo").append(data.msg); } }); }); }); </script> </head> <body> <input class="getinfo"></input> <button class="postbutton">Post via ajax!</button> <div class="writeinfo"></div> </body> </html>
如果您想知道此csrf令牌有什么问题,请阅读https://laravel.com/docs/5.3/csrf