2017-02-01 4 views
3

Может кто-нибудь объяснить метод ajax post в Laravel 5.3 с полным рабочим минимальным примером? Я знаю, что в Интернете есть некоторые ресурсы, но я скучаю по краткому, прямому минимальному примеру.ME для ajax POST в Laravel 5.3

ответ

7

Предполагаю, что у вас есть базовое представление о парадигме модели-контроля, базовом понимании Laravel и базовом понимании JavaScript и JQuery (которые я буду использовать по причинам простоты).

Мы создадим поле редактирования и кнопка, которая сообщения на сервер

1. Маршруты

На первом вам нужно добавить маршруты к вашим маршрутам/web.php. Создать один маршрут для зрения, так же, как вы знаете, от обычных видов:

Route::get('ajax', function(){ return view('ajax'); }); 

Второй маршрут вам нужно создать это маршрут, который обрабатывает запрос Ajax пост. Заметьте, что он использует пост метод:

Route::post('/postajax','[email protected]'); 

2. Контроллер Функция

В (второй) маршрут, созданный только сейчас, функция контроллера пост в AjaxController называется. Так создать контроллер

php artisan make:controller AjaxController 

и в приложение/Http/Контроллеры/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 (который состоит из статуса «успех» и сообщение, полученное функцией от запроса).

3. Вид

На первом этапе мы определили маршрут, указывающий на вид 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

+0

удивительный ответ, все здесь в первый раз, как я –