Laravel 5:使用资源

时间:2015-07-01 00:39:47

标签: javascript ajax laravel-5

我有一个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路由,它应该调用我在控制器中的store函数:

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

1 个答案:

答案 0 :(得分:0)

您无法直接提出将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() ?>">

希望这会有所帮助