【发布时间】:2016-10-26 23:20:54
【问题描述】:
我有一个如下所示的表单域:
<input name="cm[3]" value="0.0000">
我使用 serializeData 函数将它发布到一个安全的 ajax 函数:
var formData = $(form).serialize();
console.log(formData);
secureajax.securecall({
url: '/ajax/quadrants/thresholds-write',
data: formData,
success: function(data) {
... etc
请注意,我正在将数据转储到控制台...
如果我运行此代码,然后立即在 /ajax/quadrants/thresholds-write 页面转储 $_POST 数组,我会在控制台上看到我的输入值(序列化数据转储),但 post 变量始终显示默认值,在本例中为“0.0000”。
控制台sn-p:
quad_token=b765def8e66df0d473148310175e8a6e&systemsId=12&selectedString=1&cm%5B3%5D=9999...
转储到 $_POST 的 php 中:
Array
(
[systemsId] => 12
[selectedString] => 1
[cm] => Array
(
[3] => 0.0000
[5] => 1.0000
[7] => 0.0000
CM[3]的默认值是0.0000,但是当我输入诸如9999之类的东西时,我在js中看到了但是好像系统正在读取值标签,而不是输入的值。或者,我在想数组表单字段名称没有处理,但是为什么数组的格式很好,只是值弄乱了?
有什么想法吗?
注意:secureajax 是一个自定义函数,它为 ajax 调用提供 CSRF 功能。
【问题讨论】:
-
所以当你写“serializeData 函数”时,你的意思是
.serialize(),对吧?无论如何,首先要做的是使用浏览器控制台查看secureajax 代码实际上是放入传出的HTTP 请求中。 -
是的,我们可能需要看看secureajax 中有什么。它可能期望所有输入都具有 type="" 属性。
-
问题是你在页面加载时设置了
formData。您需要将该代码放入在用户提交表单时运行的函数中,以便它获取输入的更新值。
标签: javascript php arrays ajax