Ajax删除不适用于laravel 5.2

时间:2016-08-19 07:15:55

标签: jquery mysql ajax laravel-5.2

我正在delete mysql申请中laravel尝试记录<a href="{{url('/page/'.$Ids->id)}}" class="remove-entry"> <button type="button" class="close" aria-label="Close"><span aria-hidden="true">&times;</span></button> </a> 。但它显示 TokenMismatchException 错误。我无法找到它抛出错误的原因。如果有人可以提供帮助,那就太好了。

这是查看代码:(我没有表单)

$(document).on('click', '.remove-entry', function(e){
    e.preventDefault();

    $.ajax({
        url: this.href,
        type: 'DELETE',
        data: {
            "_token": "{{ csrf_token() }}"
        },
        success: function(res) {
            console.log('removed');
        }
    });
});

这是 jQuery AJAX调用

token

更新

我厌倦了以下代码,但它不起作用可能是因为它需要具有值token,我想这是从表单中获取的。但正如我上面已经提到的,我没有表单设置。那么如何在这种情况下设置headers: {'X-CSRF-TOKEN': token} 值呢?

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"(hotelPrice <= %d AND numberOfBudget <= %d)" , hotelDistanceFloat,numberOfDistance];

TableArray = [[TableArray filteredArrayUsingPredicate:sPredicate].mutableCopy]

我理解我面临的问题并不是新的或独特的,但它肯定不同于它被认为是重复的问题。此外,代码工作得很好,但它在新项目中创建问题

2 个答案:

答案 0 :(得分:3)

如果您想在laravel中发送没有CSRF令牌的Ajax请求 转到:app / Http / Middlewares / VerifyCsrfToken.php

protected $except = [
    'request/send_ajax',  /// Enter your route post link here
    'request/send_ajax1'
];

现在您可以发布没有令牌的

的ajax请求


在您将执行Ajax请求的页面上简单地插入META标记,默认中间件将检查csrf_token。

OR

$.ajax({
        url: "<?php echo url("yourrequest"); ?>",
        type: "POST",
         headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        data:'column='+column+&id='+id,
        success: function(data){
            console.log(msg);
        }        
   });

使用Laravel5.2

答案 1 :(得分:1)

您可能需要生成应用密钥,输入您的cmd:

php artisan key:generate

然后将以下行(使用生成的密钥)写入.env文件

APP_KEY=your_key

如果这不起作用,您可以在视图中创建js变量:

var token = '{{Session::token()}}';

然后不使用标题尝试:

$.ajax({
          method:"post",
          url:yoururl,
          data:{
            _token:token,
          }
 }).done(function(msg) {

});

第三个选项可能是您的用户登录到您的应用时出现问题。然后,您需要显示控制器的登录代码。

希望它会有所帮助:)