Skip to content
Permalink
Browse files

When serializing text, encode all line breaks as CRLF pairs per the a…

…pplication/x-www-form-urlencoded specification. Fixes #6876.
  • Loading branch information...
dmethvin authored and csnover committed Dec 31, 2010
1 parent 7e2810f commit eed3803c98bf5c074e40aad12f2e91435bf81154
Showing with 6 additions and 6 deletions.
  1. +2 −2 src/ajax.js
  2. +4 −4 test/unit/ajax.js
@@ -107,9 +107,9 @@ jQuery.fn.extend({
null :
jQuery.isArray(val) ?
jQuery.map( val, function(val, i){
return {name: elem.name, value: val};
return {name: elem.name, value: val.replace(/\r?\n/g, "\r\n")};

This comment has been minimized.

Copy link
@temp01

temp01 Jan 3, 2011

Contributor

This only gets run for multiple selects - Is the replacement needed here? Also, perhaps the regex should be cached at top like all the other regex's used in ajax.js and (jquery core).

This comment has been minimized.

Copy link
@dmethvin

dmethvin Jan 9, 2011

Author Member

It's somewhat pathological, but yes it can happen if the select-multiple has a value attribute with newlines. I agree on the regex, I've moved it to its own variable.

}) :
{name: elem.name, value: val};
{name: elem.name, value: val.replace(/\r?\n/g, "\r\n")};
}).get();
}
});
@@ -650,20 +650,20 @@ test("serialize()", function() {
'Check input serialization as query string');

equals( jQuery('#testForm').serialize(),
'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=',
'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=',
'Check form serialization as query string');

equals( jQuery('#testForm :input').serialize(),
'T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=',
'T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=',
'Check input serialization as query string');

equals( jQuery('#form, #testForm').serialize(),
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&select5=3&T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
'Multiple form serialization as query string');

/* Temporarily disabled. Opera 10 has problems with form serialization.
equals( jQuery('#form, #testForm :input').serialize(),
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
"action=Test&radio2=on&check=on&hidden=&foo%5Bbar%5D=&name=name&search=search&email=dave%40jquery.com&number=43&select1=&select2=3&select3=1&select3=2&T3=%3F%0D%0AZ&H1=x&H2=&PWD=&T1=&T2=YES&My+Name=me&S1=abc&S3=YES&S4=",
'Mixed form/input serialization as query string');
*/
jQuery("#html5email, #html5number").remove();

0 comments on commit eed3803

Please sign in to comment.
You can’t perform that action at this time.