【问题标题】:token mismatching ajax in LaravelLaravel中的令牌不匹配ajax
【发布时间】:2016-11-15 22:51:56
【问题描述】:
 $('#id').change(function(){
        var a = $('#id_one').val();
        var token = '<?php echo csrf_token(); ?>';
        $.ajax({
         url: "url",
         type: 'POST',
         data: {'id':a,'_token':token},
         success: function(data)
            {
             // some code
            }
        });
    })

这是我的代码。 获取令牌不匹配错误..!! 我已经尝试了以下两个..

<input type="hidden" name="_token" value="{{ csrf_token() }}" />

<script type="text/javascript">
var _globalObj = {{ json_encode(array('_token'=> csrf_token())) }}

谁能帮忙??

【问题讨论】:

标签: ajax laravel token


【解决方案1】:

您可以使用刀片模板中的令牌,只需在您视图的刀片文件中的脚本标签下声明您的会话令牌,如下所示:

<script> var token = '{{ Session::token() }}'; </script>

并在 ajax 中调用令牌,在您的代码中它将是这样的:

$('#id').change(function(){
    var a = $('#id_one').val();
    $.ajax({
     url: "url",
     type: 'POST',
     data: {'id':a,'_token':token},
     success: function(data)
        {
         // some code
        }
    });
})

【讨论】:

    【解决方案2】:

    可能是因为令牌字段名称应该是_token 而不是token

    此外,如果此 javascript 代码位于单独的 javascript 文件中,则 php 函数将不起作用。

    此外,如果您尝试发送的数据是一种形式,那么您可以这样做

     $('#id').change(function(){
            var data = $("#form").serialize() ;
            $.ajax({
             url: "url",
             type: 'POST',
             data: data,
             success: function(data)
                {
                 // some code
                }
            });
        })
    

    表单的样子

    <form id="form">
    <input type='hidden' value='{{ csrf_token() }}' name='_token'>
    <input type="text" name='id'>
    </form>
    

    【讨论】:

    • 这只是我刚刚存储的变量。这有什么意义吗?我也尝试通过在隐藏字段中传递它,仍然无法正常工作......
    • 将您的 token 变量更改为 _token 并告诉我它是否有效。还要确保 laravel 中间件未受影响。
    【解决方案3】:
    $.ajax({
                url: someurl,
                type: 'POST',
                data     : formData,
                headers: {
                        "x-csrf-token": $("#token").data('id')
                    }
                });
        }
    

    在你的 html 中

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

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 2017-05-02
      • 2017-01-25
      • 2017-05-27
      • 2015-12-20
      • 2014-11-04
      • 2020-01-28
      • 2016-10-24
      • 2018-07-10
      相关资源
      最近更新 更多