【问题标题】:jQuery Serialize on an ArrayjQuery序列化数组
【发布时间】:2011-07-28 07:15:01
【问题描述】:

我有一个包含以下输入的网页:

<input type='text' name='packagedims[]' value='1' id='packagedims' title='Package1' />

我在 jQuery 中是这样使用它的:

var packagedims = $('input#packagedims').serialize();

然后我使用 jQuery.ajax 将其发布到我的 php 文件中:

'&packagedims=' + packagedims

(我知道我可以在整个表单上使用 Serialize(),但我正在修改现有代码,所以还没有开始这样做。在上面的行中,我将单个变量发送到 php。)

当我使用 alert() 测试输出时,我得到以下信息:

&packagedims=packagedims%5B%5D=1&packagedims%5B%5D=2

我只是想检查这种输出是否正确,并且在我的 php 文件中使用 unSerialize() 将能够将其拆分为适当的数组。

谢谢,

【问题讨论】:

  • 不应该像packagedims%5B0%5D=1&amp;packagedims%5B1%5D=2吗? (包括索引)
  • 其实我就是这么想的……

标签: php jquery ajax serialization


【解决方案1】:

.serialize() [docs] 已经返回了一个字符串,格式为

key=value&key=value&...

不要附加到别的东西上,否则会变成

key=key=value&...

这是不正确的。所以不要将它与'&amp;packagedims=' 连接起来。

在 PHP 中不需要使用任何反序列化函数。数据将作为 GET 或 POST 数据发送,并可通过 $_GET$_POST 在 PHP 中使用。例如。如果您发出 POST 请求,$_POST['packagedims'] 将是一个包含值的数组。

Variables From External Sources 可能值得一读。

【讨论】:

  • 太好了,感谢您修改了我的代码,并将阅读您的建议!
  • %5D%5B值之间应该有索引值吗?
  • @rav:不,字段的名称是name='packagedims[]'。 jQuery 不会在名称中添加任何内容。而在 PHP 中,如果你想向数组中添加一些东西,你只需写 array[] = something 就可以了。
猜你喜欢
  • 2023-03-11
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2016-12-29
相关资源
最近更新 更多