Ajax post array (пустой)

-1

Я пытаюсь опубликовать ассоциативный массив с помощью вызова ajax, но массив, который я отправляю, всегда пуст (chrome network debug)

Мой вызов ajax

function getAssurance(passagers)
{
    console.log(passagers);

    var postdata =  JSON.stringify({psg:passagers});

    $.ajax({
        dataType: "json",
        url: rootUrl + "/b2c/searchAssurance",
        data: postdata,
        type: "POST",
        success:function(result) {
            console.log(result);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(textStatus);
        }
    }); 
} 

Массив верен в моем console.log()

Мой маршрут

Route::post('/b2c/searchAssurance', 'VolControllerB2C@searchAssurance');

Мой контроллер

 public function searchAssurance()
    {
        $search_data = Input::get('psg');

        log::error(print_r($search_data,true));

        echo "ok";
    }

Где я строю свой массив

var valide = true;
            var psgDetails = [];

            if($("#country").val() == "-1")
            {
                valide = false;
            }

            if($("#state").val() == "0")
            {
                valide = false;
            }

            if($("#phone_0").val() == "0")
            {
                valide = false;
            }

            if(valide)
            {
                for(var i = 0; i<$("#nb").val(); i++)
                {
                    var onePsg = [];

                    if(i==0)
                    {
                        onePsg['country'] = $("#country").val();
                        onePsg['state'] = $("#state").val();
                        onePsg['phone_0'] = $("#phone_0").val();
                    }

                    if($("#title_"+i).val() == "0")
                    {
                        valide = false;
                    }

                    if($("#name_"+i).val().length < 1)
                    {
                        valide = false;
                    }

                    if($("#lastname_"+i).val().length < 1)
                    {
                        valide = false;
                    }

                    if($("#dob_day_"+i).val() == "Day")
                    {
                        valide = false;
                    }

                    if($("#dob_month_"+i).val() == "Month")
                    {
                        valide = false;
                    }

                    if($("#dob_year_"+i).val() == "Year")
                    {
                        valide = false;
                    }

                    onePsg["title"] = $("#title_"+i).val();
                    onePsg['name'] = $("#name_"+i).val();
                    onePsg['lastname'] = $("#lastname_"+i).val();
                    onePsg['dob_day'] = $("#dob_day_"+i).val();
                    onePsg['dob_month'] = $("#dob_month_"+i).val();
                    onePsg['dob_year'] = $("#dob_year_"+i).val();

                    psgDetails.push(onePsg);
                }
            }

            if(valide)
            {
                console.log(psgDetails);
                getAssurance(psgDetails);
                $("#assurance").show("slow");
                $("#assuranceArrow").toggleClass('arrow-down arrow-up');
                $("html, body").animate({scrollTop: $('#assurance').offset().top }, 200);
            }

Кто-нибудь знает, что я делаю неправильно?

  • 0
    как вы вызываете getAssurance () и как вы вводите аргумент passagers?
  • 0
    первый возврат Input :: all (); и проверьте, все ли данные дошли до контроллера или нет.
Теги:

2 ответа

0

Я не знаю, является ли это единственной проблемой, но не стройте переменную перед отправкой ее с помощью ajax:

function getAssurance(passagers)
{
    console.log(passagers);

    //don't: var postdata =  JSON.stringify({psg:passagers});

    $.ajax({
        dataType: "json",
        url: rootUrl + "/b2c/searchAssurance",
        data: postdata,
        type: "POST",
        success:function(result) {
            console.log(result);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(textStatus);
        }
    }); 
} 
  • 0
    Все еще есть та же проблема с var postdata = {psg: passagers};
0

Я не знаю, какую структуру вы используете, но... В вашем бэкэнд-методе кажется, что вы получаете данные, используя get, но вы отправляете данные с помощью jQuery, используя post:


    public function searchAssurance()
        {
            // HERE you should use "post" to receive the data in your framework
            $search_data = Input::get('psg');
        }

Примечание: если вы используете Laravel, мой ответ неверен, поскольку Input :: get используется для всех HTTP-глаголов;

  • 0
    Да, я использую Laravel. но когда я отлаживаю свой пост Ajax в сети Chrome, мой массив уже пуст
  • 0
    Каков выход в этом условном? if (valide) { console.log(psgDetails); // Is this getting the data? ... }
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню