Вложенные карты в JQuery ajax-данных для отправки - как сериализовать «правильно»? - PullRequest
2 голосов
/ 17 сентября 2009
    var location = { "location" : {
                    "name" : $("#user_loc_name").val(),
                    "street_address" : $("#user_loc_street_address").val(),
                    "city" : $("#user_loc_city").val(),
                    "province" : $("#user_loc_province").val(),
                    "country" : $("#user_loc_country").val(),
                    "postal_code" : $("user_loc_postal_code").val(),
                    "public" : $("#user_loc_public").attr('checked')
                }};
( ... )
$.post(url, location, success_callback);

Причина, по которой мне нужна эта «вложенная» карта, заключается в том, что я отправляю ее на свой сервер рельсов и надеюсь, что смогу сделать простое обновление атрибутов _ (params [: location]) в контроллере. К сожалению, с этим решением я получаю параметры:

{"location"=>"[object Object]", ...} 

Не то, на что я надеюсь. Я надеюсь на:

{"location"=> {"name" => "valforname", "street_address" => "valforstreetadress", ...}, <other params>...}

Если я избавлюсь от «вложенности» и просто отправлю внутреннюю карту, она будет работать нормально, но каждый атрибут отображается отдельно в хэше params, и он просто громоздкий и грязный. Если бы я мог получить всю карту, вложенную под ключ "location", это было бы намного лучше.

Ответы [ 2 ]

1 голос
/ 17 сентября 2009

jQuery не поддерживает сериализацию JSON OOTB. Попробуйте любое количество библиотек. Вот стандартный :

<script src="http://www.json.org/json2.js"></script>

Ваш код выглядит так:

$.post(url, JSON.stringify(location), success_callback);
1 голос
/ 17 сентября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...