aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton M <obhvsbypqghgc@gmail.com>2011-01-31 15:58:27 +0100
committerAnton M <obhvsbypqghgc@gmail.com>2011-01-31 15:58:27 +0100
commit389c099df686bd104ce0aab3361a94ebf3a05ce6 (patch)
treea4b41fb2c1b2ea3d8ea9d0a4ffe725cfff36893b
parent4e975430510f443ef76a90d077bc8956fb8b8cc0 (diff)
downloadjquery-389c099df686bd104ce0aab3361a94ebf3a05ce6.tar.gz
jquery-389c099df686bd104ce0aab3361a94ebf3a05ce6.zip
Fixes #7568. Follow-up fix for #5862. Objects with a length property weren't serialized properly by jQuery.param.
-rw-r--r--src/ajax.js6
-rw-r--r--test/unit/ajax.js38
2 files changed, 31 insertions, 13 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 363e9c851..4258b6744 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -736,9 +736,9 @@ function buildParams( prefix, obj, traditional, add ) {
// Serialize object item.
} else {
- jQuery.each( obj, function( k, v ) {
- buildParams( prefix + "[" + k + "]", v, traditional, add );
- });
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
}
} else {
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index ec28b7c8b..716ed9c97 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -915,7 +915,7 @@ test("serialize()", function() {
});
test("jQuery.param()", function() {
- expect(22);
+ expect(23);
equals( !jQuery.ajaxSettings.traditional, true, "traditional flag, falsy by default" );
@@ -978,6 +978,9 @@ test("jQuery.param()", function() {
params = { param1: null };
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() {
@@ -1636,17 +1639,32 @@ test("jQuery.getJSON(String, Function) - JSON object with absolute url to local
});
});
-test("jQuery.post - data", function() {
- expect(2);
+test("jQuery.post - data", 3, function() {
stop();
- jQuery.post(url("data/name.php"), {xml: "5-2", length: 3}, function(xml){
- jQuery('math', xml).each(function() {
- equals( jQuery('calculation', this).text(), '5-2', 'Check for XML' );
- equals( jQuery('result', this).text(), '3', 'Check for XML' );
- });
- start();
- });
+ jQuery.when(
+ jQuery.post( url( "data/name.php" ), { xml: "5-2", length: 3 }, function( xml ) {
+ jQuery( 'math', xml ).each( function() {
+ equals( jQuery( 'calculation', this ).text(), '5-2', 'Check for XML' );
+ equals( jQuery( 'result', this ).text(), '3', 'Check for XML' );
+ })
+ }),
+
+ 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() {