분명히 작동하지만 Post Request에서 500 내부 서버 오류가 발생하는 Laravel 5 및 AJAX https://www.youtube.com/watch?v=PRCm-7mEDkY에 대한이 자습서를 따르려고합니다 . 내가 무엇을 잘못하고 있지? 간단한 예를 이해하고 거기에서 작업하고 싶습니다.
HTML
<a href="#" id="get">Get</a>
<hr>
<form action="#">
<input type="text" name="name">
<button type="submit">Send</button>
</form>
JS
$(function() {
$('#get').click(function(e){
e.preventDefault();
$.get('categories', function(data) {
console.log(data);
});
});
$('form').submit(function(e) {
e.preventDefault();
$.post('categories', {name:'name anything'}, function(data) {
console.log(data);
});
});
});
노선
Route::post('/categories', function() {
if(Request::ajax() ) {
var_dump(Input::all());
return 'ajax post request';
}
});
스토리지 로그
#0 /Users/neil/Sites/demo02/app/Http/Middleware/VerifyCsrfToken.php(17): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#1 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): App\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#2 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(55): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#3 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(61): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#5 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#7 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(40): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#9 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(42): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#11 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(125): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#12 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#13 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(101): call_user_func(Object(Closure), Object(Illuminate\Http\Request))
#14 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#15 /Users/neil/Sites/demo02/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(84): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#16 /Users/neil/Sites/demo02/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#17 /Users/neil/Sites/demo02/server.php(21): require_once('/Users/neil...')
#18 {main}
laravel 5에서는 모든 게시 요청에 csrf 토큰이 필요합니다. _token
요청 후 본문에 필드 를 추가 하거나 헤더를 추가해야합니다 X-CSRF-TOKEN
.
추가 정보
http://laravel.com/docs/master/routing#csrf-protection
하나의 가능한 솔루션 [JS가 블레이드 템플릿 내부에있는 경우].
$(function() {
$('#get').click(function(e){
e.preventDefault();
$.get('categories', function(data) {
console.log(data);
});
});
$('form').submit(function(e) {
e.preventDefault();
$.post('categories', {name:'name anything', _token: '{{ csrf_token() }}'}, function(data) {
console.log(data);
});
});
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다