Fixed serializing arrays (bug #448)
This commit is contained in:
parent
d98283a3a3
commit
dc6f9cfc9c
2 changed files with 25 additions and 10 deletions
|
@ -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] ) );
|
||||
|
|
|
@ -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®ularThing=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();
|
||||
|
|
Loading…
Reference in a new issue