Laravel 4: Input::all() не возвращает данных с $.ajax POST
В процессе изучения Laravel 4, прошу прощения, если мой вопрос звучит глупо.
Я пытаюсь использовать $.ajax для отправки данных формы на контроллер. После проверки контроллера Input::all() вообще не заполняется данными.
Проверили, что форма уже сериализована в кодах jquery. Так что теперь я ищу помощь, чтобы узнать, знает ли кто-нибудь, как решить эту проблему.
Ниже то, что я кодировал до сих пор.
Код Jquery
<script>
$(document).ready(function(){
var BASE = "<?php echo Request::root(); ?>/signup/add";
$('#password').on('blur', function() {
var info = $('.info');
$.ajax({
url:BASE,
method:'post',
contentType:'application/json; charset=utf-8',
cache:false,
dataType:'json',
data: $("#membersignup").serialize(),
success:function(data){
console.log(data);
},
error:function(xhr,status,error){
//errors here
}
});
});
});
</script>
route.php
Route::post('signup/add', array('uses'=>'MemberController@store'));
MemberController.php
public function store()
{
return Response::json(Input::all());
}
4 ответа
Set your contentType like this...
$.ajax({
url:BASE,
method:'post',
contentType: 'application/x-www-form-urlencoded',
cache:false,
dataType:'json',
data: $("#membersignup").serialize(),
success:function(data){
console.log(data);
},
error:function(xhr,status,error){
//errors here
}
});
Вместо создания url
используя это:
var BASE = "<?php echo Request::root(); ?>/signup/add";
Используйте именованный маршрут как этот:
Route::post('signup/add', array('uses' => 'MemberController@store', 'as' => 'signup.add'));
Таким образом, вам будет легче сгенерировать url
для тебя ajax
запрос, используя что-то вроде этого:
var BASE = "<?php echo route('signup.add'); ?>
Это может не решить вашу проблему, если вы все еще генерируете право url
но это даст право url
наверняка. Я сомневаюсь, что вы не отправляете запрос на право url
но не уверен.
Поскольку до сих пор нет принятого ответа, у меня только что была похожая проблема, и она была устранена путем удаления dataType
вариант и позволяет ему выбирать автоматически.
Я предполагаю, что $.ajax не работает для jquery-1.11.0.min.js.
Изменено на $.post, и у вас будет работать Input::all().