aboutsummaryrefslogtreecommitdiffstats
path: root/src/ajax
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2006-11-30 20:52:24 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2006-11-30 20:52:24 +0000
commitdc6f9cfc9cd0e2393b8f3087d8fcfa8e03260d4c (patch)
treeab466b639403e89e9d36674dda0446dd587edf5e /src/ajax
parentd98283a3a39b2fd4d2b0986c34c92f8c7b3c4e54 (diff)
downloadjquery-dc6f9cfc9cd0e2393b8f3087d8fcfa8e03260d4c.tar.gz
jquery-dc6f9cfc9cd0e2393b8f3087d8fcfa8e03260d4c.zip
Fixed serializing arrays (bug #448)
Diffstat (limited to 'src/ajax')
-rw-r--r--src/ajax/ajax.js6
-rw-r--r--src/ajax/ajaxTest.js29
2 files changed, 25 insertions, 10 deletions
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js
index 51f9d609f..73eba22b1 100644
--- a/src/ajax/ajax.js
+++ b/src/ajax/ajax.js
@@ -712,10 +712,10 @@ jQuery.extend({
} else {
// Serialize the key/values
for ( var j in a ) {
- //if one value is array then treat each array value in part
- if (typeof a[j] == 'object') {
+ // If the value is an array then the key names need to be repeated
+ if( a[j].constructor == Array ) {
for (var k = 0; k < a[j].length; k++) {
- s.push( j + "[]=" + encodeURIComponent( a[j][k] ) );
+ s.push( j + "=" + encodeURIComponent( a[j][k] ) );
}
} else {
s.push( j + "=" + encodeURIComponent( a[j] ) );
diff --git a/src/ajax/ajaxTest.js b/src/ajax/ajaxTest.js
index 8123ae87f..98f7cfcdd 100644
--- a/src/ajax/ajaxTest.js
+++ b/src/ajax/ajaxTest.js
@@ -1,5 +1,27 @@
module("ajax");
+test("serialize()", function() {
+ expect(1);
+ var data = $(':input').not('button').serialize();
+ // ignore button, IE takes text content as value, not relevant for this test
+ ok( data == 'action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo[bar]=&name=name&=foobar&select1=&select2=3&select3=1', 'Check form serialization as query string' );
+});
+
+test("param", function() {
+ expect(4);
+ var params = {foo:"bar", baz:42, quux:"All your base are belong to us"};
+ ok( $.param(params) == "foo=bar&baz=42&quux=All%20your%20base%20are%20belong%20to%20us", "simple" );
+
+ params = {someName: [1, 2, 3], regularThing: "blah" };
+ ok( $.param(params) == "someName=1&someName=2&someName=3&regularThing=blah", "with array" );
+
+ params = {"foo[]":["baz", 42, "All your base are belong to us"]};
+ ok( $.param(params) == "foo[]=baz&foo[]=42&foo[]=All%20your%20base%20are%20belong%20to%20us", "more array" );
+
+ params = {"foo[bar]":"baz", "foo[beep]":42, "foo[quux]":"All your base are belong to us"};
+ ok( $.param(params) == "foo[bar]=baz&foo[beep]=42&foo[quux]=All%20your%20base%20are%20belong%20to%20us", "even more arrays" );
+});
+
test("load(String, Object, Function) - simple: inject text into DOM", function() {
expect(2);
stop();
@@ -32,13 +54,6 @@ test("load(String, Object, Function) - check scripts", function() {
});
});
-test("serialize()", function() {
- expect(1);
- var data = $(':input').not('button').serialize();
- // ignore button, IE takes text content as value, not relevant for this test
- ok( data == 'action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo[bar]=&name=name&=foobar&select1=&select2=3&select3=1', 'Check form serialization as query string' );
-});
-
test("test global handlers - success", function() {
expect(6);
stop();