【问题标题】:TokenMismatchException In Laravel 5 AJAX [duplicate]Laravel 5 AJAX中的TokenMismatchException [重复]
【发布时间】:2015-12-19 12:41:41
【问题描述】:

我正在尝试在 Laravel 5 中创建 AJAX 调用。但我得到 TokenMismatchException 但不知道为什么。

我的 AJAX 代码是 -

$(document).ready(function()
{
    $("#send").click(function()
    {
        $.ajax({
                    headers: { 'csrftoken' : '{{ csrf_token() }}' },
                    type:   'POST',
                    url:    'add_question',
                    data:   { 
                                'webinar_id'        : 1,
                                'email_id'          : "any@email.com",
                                'question'          : $('#question_to_ask').val(),
                                'answer'            : "",
                                'panelist_id'       : 1,
                                'public'            : 1
                            },
                    success: function(data)
                    {
                        $("ul#question_list").prepend(data);
                        $("ul#question_list li:first").fadeIn("slow");
                    }
                });
    });
});

我的 Laravel 5 控制器是-

public function add_question()
{
    return "OK";
    //return Request::input('question');
}

但是在请求时得到这样的东西-

我做错了什么?

【问题讨论】:

  • 你的 JavaScript 中的 {{ csrf_token() }} 是什么?您的 JavaScript 代码是否在刀片文件中?
  • 我能看到你触发 AJAX 的视图吗?

标签: php jquery ajax laravel laravel-5


【解决方案1】:

标题的名称应该是X-CSRF-TOKEN,而不是csrftoken

$.ajax({
    headers: {
        'X-CSRF-TOKEN' : '{{ csrf_token() }}'
    },
    // ...
});

【讨论】:

    【解决方案2】:

    试试这个:

       $(document).ready(function()
        {
            $("#send").click(function()
            {
                $.ajax({
                            headers: { 'csrftoken' : '{{ csrf_token() }}' },
                            type:   'POST',
                            url:    'add_question',
                            data:   { 
                                        'webinar_id'        : 1,
                                        'email_id'          : "any@email.com",
                                        'question'          : $('#question_to_ask').val(),
                                        'answer'            : "",
                                        'panelist_id'       : 1,
                                        'public'            : 1,
                                         '_token'           : '{{csrf_token()}}' 
                                    },
                            success: function(data)
                            {
                                $("ul#question_list").prepend(data);
                                $("ul#question_list li:first").fadeIn("slow");
                            }
                        });
            });
        });
    

    【讨论】:

    • 不是一个好的标题名称。应该是:X-CSRF-TOKEN
    【解决方案3】:

    使用这个:

    var ajaxCall=$.post("{{ url('add_question')}}",
    {
    webinar_id        : 1,
    email_id          : "any@email.com",
    question          : $('#question_to_ask').val(),
    answer            : "",
    panelist_id       : 1,
    public            : 1,
    _token              : '{!! csrf_token()!!}'
     });
    ajaxCall.done(function(data){
     .....
    });
    
    ajaxCall.fail(function(){
    ....
    });
    

    【讨论】:

      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2014-03-04
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多