2015-07-01 2 views
0

У меня есть проект Laravel 5, и я пытаюсь использовать вызов AJAX для отправки некоторых входных данных на сервер. Тем не менее, я продолжаю работать с ошибками внутренней службы.Laravel 5: Ajax post call failing с ресурсом

У меня есть "пользователь" ресурс, который я использую для этого:

Это код:

routes.php:

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

У меня есть UserController.php и пользователя. 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);} 
    }); 

    } 

Я использую маршрут пост/пользователя, который должен вызвать функцию магазина, который я имею в контроллере:

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; 

    } 

Я понятия не имею, почему это не работает. Пожалуйста помоги!

EDIT: (это до сих пор не работает):

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

Любых идей от кого? – user1072337

ответ

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() ?>"> 

Надеется, что это поможет

+0

Почему Laravel сделал это настолько сложным в 5? Это было просто в 4. – user1072337

+0

Я установил это, и он все еще не работает. См. Выше в моем вопросе, что я использую. – user1072337

+0

Какая ошибка вы получаете в конце концов? –