换行符根据提交方法序列化为不同数量的字符?

时间:2013-09-12 09:01:33

标签: jquery

我在索引1的字段中有一个5字段HTML表单,换行符(按Enter键,%0A),其他所有字符都为空。

如果我使用

$.post( "http://myserver.com/page.php", $("#fields").serialize()

然后在page.php调用

echo serialize( $_POST['fields'] );

结果是

a:4:{i:0;s:0:"";i:1;s:1:" ";i:2;s:0:"";i:3;s:0:"";}

请注意,索引1字段中的字符串长度为1。

现在,如果我使用常规html提交表单按钮提交相同的表单,并且在page.php上调用相同的结果

a:4:{i:0;s:0:"";i:1;s:2:" ";i:2;s:0:"";i:3;s:0:"";}

注意索引1字段中的字符串长度现在是2.实验表明,每个换行符似乎增加了一个长度。

这是什么原因以及如何使jquery调用与标准调用匹配?感谢。

2 个答案:

答案 0 :(得分:0)

from jQuery ajax api

  

processData(默认值:true)   类型:布尔值   默认情况下,作为对象传入数据选项的数据(技术上,不是字符串)将被处理并转换为查询字符串,适合默认内容类型“application / x-www-form-urlencoded” 。如果要发送DOMDocument或其他未处理的数据,请将此选项设置为false。

答案 1 :(得分:0)

所以修复的代码是

$("#fields").serialize().replace(/\%0A/g, "%0D%0A")