令牌不匹配Laravel中的ajax

时间:2016-07-13 11:17:09

标签: ajax laravel token

public class FileUploaderResultsTable extends Table
{

    public FileUploaderResultsTable()
    {
        setCaption("Rendering table");
        addStyleName("testTable2");
        addContainerProperty("Name", String.class, null);
        addContainerProperty("Mag",  Float.class, null);

        addItem(new Object[]{"Canopus",        -0.72f}, 2);
        addItem(new Object[]{"Arcturus",       -0.04f}, 3);
        addItem(new Object[]{"Alpha Centauri", -0.01f}, 4);

        setPageLength(resultTable.size());

        System.out.println("table created");
    }
}

这是我的代码。 获得令牌不匹配错误.. !! 我尝试了以下两种方法..

 $('#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
            }
        });
    })

任何人都可以帮忙吗??

3 个答案:

答案 0 :(得分:0)

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

<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
        }
    });
})

答案 1 :(得分:0)

可能是因为令牌字段名称应为_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>

答案 2 :(得分:0)

$.ajax({
            url: someurl,
            type: 'POST',
            data     : formData,
            headers: {
                    "x-csrf-token": $("#token").data('id')
                }
            });
    }

并在你的HTML中

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