次のようなsrcでjQuery.ajax()を使い、構造体(リストや配列)データをpostすると、パラメータ名が変更されるみたい([]が付加)。
test_ajax_req: function(){ var req_data = { scalar_val : 'ABC', list_val: [1,2,3], hash_val: {'A':'a','B':'b'} }; var this_obj = this; $.ajax({url: 'TestServer.pl', type: 'POST', data: req_data, success: function(ret_json,txt_status,xhr){ }, error: function(ret_json,txt_status,xhr){ } }); },
scalar_val=ABC&list_val%5B%5D=1&list_val%5B%5D=2&list_val%5B%5D=3&hash_val%5BA%5D=a&hash_val%5BB%5D=b つまり↓これ hash_val[A] a hash_val[B] b list_val[] 1 list_val[] 2 list_val[] 3 scalar_val ABC
ajax()のオプションにある traditional:true オプション
http://api.jquery.com/jQuery.ajax
http://api.jquery.com/jQuery.param
jQuery.param()のドキュメントにもありますが、このキー名変更は、再帰的にシリアライズする為にjquery v.1.4<->1.5で仕様変更されたらしく、ajax()に traditional:true オプションを加えると、次のようなpost dateになり、ハッシュ値を送信することができません。
scalar_val=ABC&list_val=1&list_val=2&list_val=3&hash_val=%5Bobject+Object%5D つまり↓これ hash_val [object Object] list_val 1 list_val 2 list_val 3 scalar_val ABC