Javascript 获取CSRF令牌不匹配Laravel

Javascript 获取CSRF令牌不匹配Laravel,javascript,php,ajax,laravel,laravel-5,Javascript,Php,Ajax,Laravel,Laravel 5,我正在尝试使用javascript提交表单,但我不断收到此错误CSRF令牌不匹配。我试图更改var url=“{{route('review.store')}”到{{route('review.store')}}?{u-token={{csrf_-token()}}并且它正在将表单提交到数据库,而没有数据。我见过很多类似的问题,但我没有得到一个解决我的情况。我如何才能解决这个问题 <form id="form" enctype="multipart/form-data"> &

我正在尝试使用javascript提交表单,但我不断收到此错误
CSRF令牌不匹配
。我试图更改
var url=“{{route('review.store')}”
{{route('review.store')}}?{u-token={{csrf_-token()}}
并且它正在将表单提交到数据库,而没有数据。我见过很多类似的问题,但我没有得到一个解决我的情况。我如何才能解决这个问题

<form id="form" enctype="multipart/form-data">
    <input type="hidden" value="{{csrf_token()}}" id="token"/>
<div class="form-group" >
<label for="title">Title</label>
<input type="text" name="title" >
</div>

<div class="form-group">
<label for="description">Description</label>
<input type="text" name="description">
</div>
</form>
<input type='button' value="Submit" id="btn"/>
路线

您在隐藏字段中缺少名称\u标记,只需序列化 形成并发送请求


标题
描述
$(文档).ready(函数(){
$(“#btn”)。单击(函数(事件){
event.preventDefault();
var url=“{route('review.store')}}”;
var formData=$('#form').serializeArray();
$.ajax({
url:url,
数据:formData,
键入:“POST”,
cache:false,
contentType:false,
processData:false,
成功:功能(数据){
if($.isEmptyObject(data.error)){
$(“#msg”).html(“成功”);
$(“#msg”)。淡出(3000);
}
}
});
});
});

在jquery中,请按如下方式获取令牌:

    var data = {
        "_token": $('#token').val()
    };
你也可以试试看

    data: {
       "_token": "{{ csrf_token() }}",
       "id": myid
    }
因此,您的ajax请求将是

$.ajax({
  url : "url",
  method:"post",
  data : {
    "_token": $('#csrf-token')[0].content
  },
  // Other stuffs to do
});

请尝试这样使用,然后序列化表单数据


{{csrf_field()}}
标题
描述

尝试使用
@csrf
{{csrf_field()}
您仍然可以尝试。我拿走了表单标签和表单上的csrf令牌

//形式

    <div class="form-group" >
    <label for="title">Title</label>
    <input type="text" id="title" name="title" >
    </div>

    <div class="form-group">
    <label for="description">Description</label>
    <input type="text" id="description" name="description">
    </div>
    </form>
    <input type='button' class="btn-submit" value="Submit" id="btn"/>

标题
描述
//ajax调用

<script>
$(function() {
   $(".btn-submit").click(function(e){

        var title= $("input[name=title]").val();

        var description= $("input[name=description]").val();


        $.ajax({
              url: murl +'/your-url',
              type: "post",
              data: {'title':title, 'description':description, '_token':  $('input[name=_token]').val()},
              success: function(data){

              console.log(data);

              }


        });


    });


});



</script>

$(函数(){
$(“.btn提交”)。单击(功能(e){
var title=$(“输入[name=title]”)。val();
var description=$(“输入[name=description]”)val();
$.ajax({
url:murl+'/您的url',
类型:“post”,
数据:{'title':title,'description':description,'u token':$('input[name='u token')).val(),
成功:功能(数据){
控制台日志(数据);
}
});
});
});

解决此问题的最佳方法“X-CSRF-TOKEN”是在主布局中添加以下代码,并继续正常进行ajax调用:

在标题中

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

在表单中,在表单中的任意位置添加csrf令牌

<form>
{{ csrf_field() }}
</form>

{{csrf_field()}}
手稿

<script type="text/javascript">
$.ajax({
    url: url,
    data: formData,
    type: 'POST',
    cache: false,
    contentType: false,
    processData: false,
    headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    success:function(data){
    if($.isEmptyObject(data.error)){
    $("#msg").html("successfull");
    $("#msg").fadeOut(3000);
     }
    }
});

</script>

$.ajax({
url:url,
数据:formData,
键入:“POST”,
cache:false,
contentType:false,
processData:false,
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
成功:功能(数据){
if($.isEmptyObject(data.error)){
$(“#msg”).html(“成功”);
$(“#msg”)。淡出(3000);
}
}
});

我希望它对您有用

我建议您使用

@csrf

在表单HTML标记中,
然后
newformdata()
处理crsf和方法输入

请求有效负载是否具有
\u令牌
值?使用浏览器开发工具确认。是的,它是@ab.in请添加您的
web.php
文件。检查updated@ab.inAre你确定你的请求到达了正确的终点?你能为请求负载添加屏幕截图吗?我添加了仍然显示
CSRF令牌不匹配的屏幕截图。“
@Lalit KumarI检查如何序列化表单?@Lalit KumarStill显示
CSRF令牌不匹配。”
并且在负载中显示此
[对象对象对象对象],[对象对象对象对象],[对象对象],[对象]
@Lalit KumarPrint请求不要在
url:murl+'/your-url'中使用dataso这是什么
murl
因为我得到的
murl没有定义
@Julius fasemaoh!实际上浏览器上的应用程序url已经在布局上定义好了。因此,murl所做的是选择定义好的url,将其缩短并将其附加到url中在ajax调用中。抱歉,您可以在您的案例中删除它。我尝试了这种方式,它显示错误
CSRF令牌不匹配
,但它显示formData{title,description}@Julius Fasemait has to do Session::flush()。尝试修复它如何?您可以更新您的答案吗?也许@Julius Fasema
<form>
{{ csrf_field() }}
</form>
<script type="text/javascript">
$.ajax({
    url: url,
    data: formData,
    type: 'POST',
    cache: false,
    contentType: false,
    processData: false,
    headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    success:function(data){
    if($.isEmptyObject(data.error)){
    $("#msg").html("successfull");
    $("#msg").fadeOut(3000);
     }
    }
});

</script>
@csrf
@method("PUT")