Intereting Posts
Perplexing php / Mysql Арифметическое поведение времени Получите метаинформацию, заголовок и все изображения любой веб-страницы, используя php Изменение значений в <select> с помощью другого <select> с использованием AJAX (PHP) Google Openid: Это приемлемый способ выхода из системы? PHP / MYSQL допускает только один голос на одного члена? Какова наилучшая практика экспорта холста с высококачественными изображениями? PDO: Как проверить, действительно ли соединение активно, для реального? Как включить внешний PHP-файл в статью Joomla? PHP добавление пользовательского пространства имен с помощью автозагрузчика от композитора Странность с хвостом PHP -n 1, возвращающая несколько результатов PHP DOMDocument заменит дочерний элемент DOMElement на строку HTML Как отправить запрос GEt на PHP в iOS python формат datetime с "st", "nd", "rd", "th" (английский порядковый суффикс), как PHP "S" php: экспортировать массив в xml-проблему PHP: почему моя дата сформирована на сервере по-разному?

Как отправить запрос Ajax в среду Laravel 5.0?

Я попытался исправить это все утро, и я не могу найти какой-либо рабочий метод в Интернете.

Я пытаюсь выполнить простой запрос ajax для своего контроллера Laravel и получить данные, которые он отправляет. Я упростил его до максимума, и я все еще получаю ERROR 500 с данными «undefined».

Кажется, что каждый пример onlines относится к Laravel 4.0, я не уверен, что они что-то изменили или нет, но никто не работает. Я также попытался изменить маршрут на «любой», и он работает с прямым доступом, но не с запросом ajax.

Благодарю.

Контроллер:

<?php namespace App\Http\Controllers; use Session, DB, Request; class AjaxController extends Controller { public function question() { print_r("Made It"); die(); } } 

Маршрут:

 Route::post('/ajax/question', 'AjaxController@question'); 

Javascript:

 $.ajax({ url: "/ajax/question", method: 'POST', data: { 'answered': '1' }, processData: false, contentType: false, cache: false, success: function(data) { console.log(data); console.log("success"); }, error: function(data) { console.log(data); console.log("error"); } }); 

console.log (data) дает следующее:

 readyState 4 responseText "" status 500 statusText "Internal Server Error" abort function(e) always function() complete function() done function() error function() fail function() getAllResponseHeaders function() getResponseHeader function(e) overrideMimeType function(e) pipe function() progress function() promise function(e) setRequestHeader function(e, t) state function() statusCode function(e) success function() then function() его readyState 4 responseText "" status 500 statusText "Internal Server Error" abort function(e) always function() complete function() done function() error function() fail function() getAllResponseHeaders function() getResponseHeader function(e) overrideMimeType function(e) pipe function() progress function() promise function(e) setRequestHeader function(e, t) state function() statusCode function(e) success function() then function() 

EDIT: Если я изменил запрос на GET, он работает правильно. (Настроить маршрут на любой)

Если вы посмотрите на консоль вашего браузера в ответ, скорее всего, вы попадаете на промежуточное ПО CSRF . Вам нужно отправить _token с текущим значением для пользователя csrf_token() .

Мы включаем это в наши макеты страниц, чтобы автоматически добавлять его ко всем запросам AJAX через заголовок (что понимает Ларавел):

 <script> $(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': {!! json_encode(csrf_token()) !!};, } }); }); </script> 

Подробнее о том, как это работает, см. https://github.com/laravel/framework/blob/8687d42c6674e47efc093b5092ea217b62ba293a/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php#L55 .