2016-02-09 4 views
3

Вот мой Аякса код:использование Ajax в Laravel 5

$('select[id=currency-data]').change(function() { 

    var currency_id = $(this).val(); 

    $.ajax({ 
     url: "{{Route('exchange-rate')}}", 
     type: 'POST', 
     data: {currency_id: currency_id }, 
     success: function(data){ 
      $('#ex-rate').val(data); 
     } 
    }); 
}); 

Вид:

 {!! Form::label('currency_id', 'Currency:', ['class' => 'control-label']) !!} 
     {!! Form::Select('currency_id', $currency_data, Input::old('currency_id'), ['id'=>'currency-data','class' => 'form-control','required']) !!} 

     {!! Form::label('exchange_rate', 'Exchange Rate:', ['class' => 'control-label']) !!} 
     {!! Form::input('number','exchange_rate', Input::old('exchange_rate'), ['id'=>'ex-rate','class' => 'form-control','readonly','required']) !!} 

, когда я запускаю это, я получаю сообщение об ошибке: TokenMismatchException в VerifyCsrfToken.php ..

может кто-то дать решение ???

ответ

0

Изменить
data: {currency_id: currency_id },
в

data: data: {_token: '{!! csrf_token() !!}',currency_id: currency_id }, 
1

привет, если вы оставляете JS и просматривать файл отдельно и хотите использовать Ajax для отправки форм, чем атрибуты использования данных для любого HTML-тега в виду, чтобы добавить CSRF токен как это.

<div id="toke" data-token="{!! csrf_token() !!}"></div> 

теперь вы можете получить доступ к фишке в JS файлов

$.ajax({ 
    url: "{{Route('exchange-rate')}}", 
    type: 'POST', 
    data: data: {_token: $('#token').data('token'),currency_id: currency_id }, 
    success: function(data){ 
     $('#ex-rate').val(data); 
    } 
}); 
}); 

второго варианта, это создать скрытый элемент ввода и использование JQuery формы Serialize для извлечения данных формы

<form id="form-data" action="url" method = 'POST' />  
{!! csrf_field() !!} 

{!! Form::label('currency_id', 'Currency:', ['class' => 'control-label']) !!} 
{!! Form::Select('currency_id', $currency_data, Input::old('currency_id'), ['id'=>'currency-data','class' => 'form-control','required']) !!} 

{!! Form::label('exchange_rate', 'Exchange Rate:', ['class' => 'control-label']) !!} 
{!! Form::input('number','exchange_rate', Input::old('exchange_rate'), ['id'=>'ex-rate','class' => 'form-control','readonly','required']) !!} 

JQuery

var form = $("#form-data"); 
$.ajax({ 
     url: form.attr('action'), 
     type: 'POST', 
     data: form.serialize(), 
     success: function(data){ 
      $('#ex-rate').val(data); 
     } 
    }); 
}); 
1

Добавить это на <head> тег на файл лезвия

<meta name="csrf-token" content="{{ csrf_token() }}"> 

На вашем JavaScript сразу после вашей библиотеки JQuery, звоните:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script> 
$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
}); 
</script> 
Смежные вопросы