Fixes #7568. Follow-up fix for #5862. Objects with a length property weren't serialized properly by jQuery.param.
This commit is contained in:
parent
4e97543051
commit
389c099df6
2 changed files with 31 additions and 13 deletions
|
@ -736,9 +736,9 @@ function buildParams( prefix, obj, traditional, add ) {
|
||||||
|
|
||||||
// Serialize object item.
|
// Serialize object item.
|
||||||
} else {
|
} else {
|
||||||
jQuery.each( obj, function( k, v ) {
|
for ( var name in obj ) {
|
||||||
buildParams( prefix + "[" + k + "]", v, traditional, add );
|
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -915,7 +915,7 @@ test("serialize()", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.param()", function() {
|
test("jQuery.param()", function() {
|
||||||
expect(22);
|
expect(23);
|
||||||
|
|
||||||
equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
|
equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
|
||||||
|
|
||||||
|
@ -978,6 +978,9 @@ test("jQuery.param()", function() {
|
||||||
|
|
||||||
params = { param1: null };
|
params = { param1: null };
|
||||||
equals( jQuery.param(params,false), "param1=null", "Make sure that null params aren't traversed." );
|
equals( jQuery.param(params,false), "param1=null", "Make sure that null params aren't traversed." );
|
||||||
|
|
||||||
|
params = {'test': {'length': 3, 'foo': 'bar'} };
|
||||||
|
equals( jQuery.param( params, false ), "test%5Blength%5D=3&test%5Bfoo%5D=bar", "Sub-object with a length property" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("synchronous request", function() {
|
test("synchronous request", function() {
|
||||||
|
@ -1636,17 +1639,32 @@ test("jQuery.getJSON(String, Function) - JSON object with absolute url to local
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.post - data", function() {
|
test("jQuery.post - data", 3, function() {
|
||||||
expect(2);
|
|
||||||
stop();
|
stop();
|
||||||
|
|
||||||
jQuery.post(url("data/name.php"), {xml: "5-2", length: 3}, function(xml){
|
jQuery.when(
|
||||||
jQuery('math', xml).each(function() {
|
jQuery.post( url( "data/name.php" ), { xml: "5-2", length: 3 }, function( xml ) {
|
||||||
equals( jQuery('calculation', this).text(), '5-2', 'Check for XML' );
|
jQuery( 'math', xml ).each( function() {
|
||||||
equals( jQuery('result', this).text(), '3', 'Check for XML' );
|
equals( jQuery( 'calculation', this ).text(), '5-2', 'Check for XML' );
|
||||||
});
|
equals( jQuery( 'result', this ).text(), '3', 'Check for XML' );
|
||||||
start();
|
})
|
||||||
});
|
}),
|
||||||
|
|
||||||
|
jQuery.ajax({
|
||||||
|
url: url('data/echoData.php'),
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
'test': {
|
||||||
|
'length': 7,
|
||||||
|
'foo': 'bar'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
success: function( data ) {
|
||||||
|
strictEqual( data, 'test%5Blength%5D=7&test%5Bfoo%5D=bar', 'Check if a sub-object with a length param is serialized correctly');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
).then( start, start );
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.post(String, Hash, Function) - simple with xml", function() {
|
test("jQuery.post(String, Hash, Function) - simple with xml", function() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue