From: Ben Alman Date: Sat, 6 Feb 2010 02:43:10 +0000 (+0800) Subject: Ok, this should actually fix #6041 :) X-Git-Tag: 1.4.2~27^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3c5b1ca03ba6ca8504e7ba1c61c4d639814f4233;p=jquery.git Ok, this should actually fix #6041 :) --- diff --git a/src/ajax.js b/src/ajax.js index f514caee7..3c19ad6c7 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -624,7 +624,7 @@ jQuery.extend({ // If traditional, encode the "old" way (the way 1.3.2 or older // did it), otherwise encode params recursively. for ( var prefix in a ) { - buildParams( traditional ? prefix : prefix.replace(/[\[\]]/g, ""), a[prefix] ); + buildParams( prefix, a[prefix] ); } } @@ -635,7 +635,7 @@ jQuery.extend({ if ( jQuery.isArray(obj) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { - if ( traditional ) { + if ( traditional || /\[\]$/.test( prefix ) ) { // Treat each array item as a scalar. add( prefix, v ); } else { diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 4a823ac1b..0464c7b5f 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -379,7 +379,7 @@ test("jQuery.param()", function() { params = { a:[1,2], b:{ c:3, d:[4,5], e:{ x:[6], y:7, z:[8,9] }, f:true, g:false, h:undefined }, i:[10,11], j:true, k:false, l:[undefined,0], m:"cowboy hat?" }; equals( jQuery.param(params,true), "a=1&a=2&b=%5Bobject+Object%5D&i=10&i=11&j=true&k=false&l=undefined&l=0&m=cowboy+hat%3F", "huge structure, forced traditional" ); - equals( decodeURIComponent( jQuery.param({ "test[]": [0, 1, 2] }) ), "test[]=0&test[]=1&test[]=2", "Make sure params are double-encoded." ); + equals( decodeURIComponent( jQuery.param({ a: [1,2,3], 'b[]': [4,5,6], 'c[d]': [7,8,9], e: { f: [10], g: [11,12], h: 13 } }) ), "a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13", "Make sure params are not double-encoded." ); jQuery.ajaxSetup({ traditional: true });