2009-09-17 54 views
2
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); 

我需要這個'嵌套'地圖的原因是因爲我發送這個到我的rails後端,我希望我可以在控制器中做一個簡單的更新_屬性(params [:位置])。不幸的是,這種解決方案我得到參數:JQuery ajax數據發送嵌套地圖 - 如何正確序列化'?

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

不是我希望的。我希望的:

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

如果我擺脫「築巢」的,只是把它正常工作內的地圖,但每個屬性在params哈希表分別顯示出來,它只是繁瑣和雜亂。如果我可以將整個地圖嵌套在「位置」的關鍵字下,則會更好。

回答

1

jQuery的不支持JSON序列化的開箱即用。嘗試任何數量的庫。下面是the standard one:然後

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

代碼如下:

$.post(url, JSON.stringify(location), success_callback); 
+0

ECMA腳本3.1使得JSON內置的全局對象。 Firefox> = 3.5有它,不知道有關Chrome,Safari ... 可以在這裏閱讀關於它的信息 https://developer.mozilla.org/En/JSON – Ryu 2009-09-28 19:10:03