【问题标题】:Laravel 5: Ajax post call failing with a resourceLaravel 5:Ajax 发布调用因资源而失败
【发布时间】:2015-07-01 00:39:46
【问题描述】:

我有一个 Laravel 5 项目正在运行,我正在尝试使用 AJAX 调用将一些输入数据发送回服务器。但是,我不断遇到内部服务错误。

我有一个“用户”资源用于此目的:

这是代码:

routes.php:

Route::resource('user', 'UserController');

我设置了 UserController.php 和 User.php 模型。

我将 Ajax 调用封装在 react.js 函数中:

saveAndContinue: function(e) {
    e.preventDefault()

    // Get values via this.refs

    email = this.refs.email.getDOMNode().value

    request = $.ajax({ 
          url: "/user", 
          type: "post", success:function(data){
            this.setState({email: data})
          }, 
          data: {'email': email} ,beforeSend: function(data){console.log(data);} 
    });

  }

我正在使用 post /user 路由,它应该调用我在控制器中的存储功能:

public function store() {

        $v = Fan::validate(Input::all());

        $email = Input::get('email');

        if ( $v->passes() ) {  

            $user = new User;
            $user->email = Input::get('email');
            $user->save();

        }

        return $email;

    }

我不知道为什么这不起作用。

编辑

这仍然不起作用:

<meta name="csrf-token" content="<?= csrf_token() ?>">

$.ajaxSetup({
    headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
    }
});

request = $.ajax({ 
          url: "/user", 
          type: "post", success:function(data){
          }, 
          data: {'email': email} ,beforeSend: function(data){console.log(data);} 
    });

【问题讨论】:

  • 大家有什么想法吗?

标签: javascript ajax laravel-5


【解决方案1】:

您不能直接发出需要将 csrf 令牌传递给 laravel 的请求 :)

     $.ajaxSetup({
    headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
    }
});

这将从标头元数据标记中获取 CSRF 令牌,并将其包含在每个 ajax 请求的标头中。然后你需要将元数据和令牌添加到你的 Laravel 模板中,例如。

<head>
    <title></title>
    <meta name="csrf-token" content="<?= csrf_token() ?>">

希望这会有所帮助

【讨论】:

  • 为什么 Laravel 在 5 中做的这么复杂?这在 4 中很简单。
  • 我设置了它,但它仍然无法正常工作。请参阅上面的问题,我正在使用什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多