0

我有一个 5 字段的 HTML 表单,在索引 1 的字段中有一个换行符(按回车,%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 调用与标准调用匹配?谢谢。

4

2 回答 2

0

来自 jQuery ajax api

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

于 2013-09-12T10:02:14.197 回答
0

所以要修复的代码是

$("#fields").serialize().replace(/\%0A/g, "%0D%0A")
于 2013-09-13T02:06:37.837 回答