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().

Другие вопросы по тегам