Updated param method to encode name as well as value (per spec: http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1)
This commit is contained in:
parent
a8f1d0ea4d
commit
386c0bc8a6
|
@ -790,7 +790,7 @@ jQuery.extend({
|
||||||
if ( a.constructor == Array || a.jquery )
|
if ( a.constructor == Array || a.jquery )
|
||||||
// Serialize the form elements
|
// Serialize the form elements
|
||||||
for ( var i = 0; i < a.length; i++ )
|
for ( var i = 0; i < a.length; i++ )
|
||||||
s.push( a[i].name + "=" + encodeURIComponent( a[i].value ) );
|
s.push( encodeURIComponent(a[i].name) + "=" + encodeURIComponent( a[i].value ) );
|
||||||
|
|
||||||
// Otherwise, assume that it's an object of key/value pairs
|
// Otherwise, assume that it's an object of key/value pairs
|
||||||
else
|
else
|
||||||
|
@ -799,9 +799,9 @@ jQuery.extend({
|
||||||
// If the value is an array then the key names need to be repeated
|
// If the value is an array then the key names need to be repeated
|
||||||
if ( a[j].constructor == Array )
|
if ( a[j].constructor == Array )
|
||||||
for ( var k = 0; k < a[j].length; k++ )
|
for ( var k = 0; k < a[j].length; k++ )
|
||||||
s.push( j + "=" + encodeURIComponent( a[j][k] ) );
|
s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j][k] ) );
|
||||||
else
|
else
|
||||||
s.push( j + "=" + encodeURIComponent( a[j] ) );
|
s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) );
|
||||||
|
|
||||||
// Return the resulting serialization
|
// Return the resulting serialization
|
||||||
return s.join("&");
|
return s.join("&");
|
||||||
|
|
|
@ -4,7 +4,7 @@ test("serialize()", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
var data = $(':input').not('button').serialize();
|
var data = $(':input').not('button').serialize();
|
||||||
// ignore button, IE takes text content as value, not relevant for this test
|
// 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' );
|
ok( data == 'action=Test&text2=Test&radio1=on&radio2=on&check=on&=on&hidden=&foo%5Bbar%5D=&name=name&=foobar&select1=&select2=3&select3=1', 'Check form serialization as query string' );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("param", function() {
|
test("param", function() {
|
||||||
|
@ -16,10 +16,10 @@ test("param", function() {
|
||||||
ok( $.param(params) == "someName=1&someName=2&someName=3®ularThing=blah", "with array" );
|
ok( $.param(params) == "someName=1&someName=2&someName=3®ularThing=blah", "with array" );
|
||||||
|
|
||||||
params = {"foo[]":["baz", 42, "All your base are belong to us"]};
|
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" );
|
ok( $.param(params) == "foo%5B%5D=baz&foo%5B%5D=42&foo%5B%5D=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"};
|
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" );
|
ok( $.param(params) == "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("pass-through request object", function() {
|
test("pass-through request object", function() {
|
||||||
|
|
Loading…
Reference in a new issue