在Laravel5中使用ajax
以下是我的ajax代码:在Laravel5中使用ajax,ajax,laravel,Ajax,Laravel,以下是我的ajax代码: $('select[id=currency-data]').change(function () { var currency_id = $(this).val(); $.ajax({ url: "{{Route('exchange-rate')}}", type: 'POST', data: {currency_id: currency_id }, success: functio
$('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);
}
});
});
视图:
当我运行这个程序时,我得到了一个错误:VerifyCsrfToken.php中的TokenMismatchException
有人能给出解决办法吗?改变数据:{currency\u id:currency\u id},
到
您好,如果您将js和view文件分开,并且希望使用ajax提交表单,而不是使用视图中任何HTML标记的数据属性来添加csrf令牌,如下图所示
<div id="toke" data-token="{!! csrf_token() !!}"></div>
第二个选项是创建隐藏的输入元素,并使用jquery表单序列化来获取表单数据
<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']) !!}
将此添加到刀片文件的
标记上
<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>
$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
});
<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']) !!}
var form = $("#form-data");
$.ajax({
url: form.attr( 'action' ),
type: 'POST',
data: form.serialize(),
success: function(data){
$('#ex-rate').val(data);
}
});
});
<meta name="csrf-token" content="{{ csrf_token() }}">
<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>