2016-08-06 6 views
0

Я использую ajax для отправки запроса, затем он обновляет часть сайта с помощью функции jquery «load», и он работает хорошо, но когда я пытаюсь повторить этот пост, он говорит MethodNotAllowedHttpException. Я думаю, что проблема в защите laravel csrf, потому что после обновления всей страницы она отлично работает Моя проблема заключается в том, как я могу сохранить токен csrf, даже если обновить часть сайта? ** заранее спасибо ** (ᵔᴥᵔ)МетодNotAllowedHttpException - CSRF -laravel 5.2

эти маршруты

Route::post('/upvote', array(
    'uses'=> '[email protected]', 
    'as'=> 'upvote')); 

Route::post('/putcomment', array(
    'uses'=> '[email protected]', 
    'as'=> 'putcomment')); 

Я думаю, что проблема не в маршрутах, потому что он работает нормально, но когда Ajax загружает часть сайта останавливается рабочий, это то, как я загружаю только часть сайта $("#partOfSite").load('theURLofSITE #partOfSite')

если перезагрузить страницу, то получается работать снова

ответ

0

Я решил эту проблему, так как г-н @Gadzhev сказал не проблема с проверкой CSRF это проблема с маршрутом.

маршрут определен в функции ajax, но не в форме, поэтому, когда я загружаю jquery, форма забудьте, что есть функция, которая выполняет эту форму и начинает подавать форму без ajax, поэтому она вызывает эту проблему и это означает, что маршруты ошибочны.

так, чтобы решить эту проблему просто перезагрузить функцию Ajax с DIV вы хотите load.or, если вы используете триггер функции, как этот

$('.button').on('click',function(){alert('clicked')})

изменить его на:

$('body').on('click','.button',function(){alert('clicked')})

вот несколько вопросов, которые могут вам помочь:

Jquery Event won't fire after ajax call

why does jquery's .load() ignore <script>?

1

обычно рекомендуется передать маркер CSRF на веб-странице в мета-теги (которые находятся внутри <head></head> метки)

<meta name="_token" content="{{ csrf_token() }}" /> 
+0

Хорошо, теперь я знаю, как сделать это БЛАГОДАРЯ ~ (˘▾˘ ~) (~ ˘▾˘) ~ \ (• ◡ •)/ –

+0

НЕТ ЭТО НЕ РАБОТАЕТ ಠ ~ ಠ –

+0

Это просто сделает его доступным на странице. Вам нужно будет отправить его с каждым запросом jQuery –

1

Можете ли вы показать ваши маршруты? Исключением ошибки для отсутствующего токена CSRF обычно является TokenMismatchException. MethodNotAllowedHttpException указывает, что с маршрутами что-то не так.

Либо маршрут не определен, либо вы не передаете правильный глагол. Вот пример AJAX вызова для метода PUT:

function myAjaxCall() { 

    var formData = { 
     '_method': 'PUT' 
     // Some other data you want to pass to your controller 
    } 

    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content') 
     } 
    }); 

    $.ajax({ 
     url: url, 
     type: "POST", 
     data: formData, 
     success: function (response) { 
      // Your login on success 
     }, 
     error: function (response) { 
      // Handle error 
     } 
    }); 
} 
+0

, пожалуйста, посмотрите, я обновляю вопрос –

+0

Можете ли вы также включить свои взгляды и методы контроллера? Будет легче понять ваше приложение – Gadzhev

Смежные вопросы