我有一个表单字段,看起来像这样:
<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/象限/阈值-写页面转储$_POST数组,我在控制台上看到我的输入值(序列化的数据转储),但是post变量总是显示默认值,在本例中为"0.0000"。
控制台代码:
quad_token=b765def8e66df0d473148310175e8a6e&systemsId=12&selectedString=1&cm%5B3%5D=9999...
在php中转储$_POST:
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功能。
我发现了这个问题。我有多个div,一次只显示一个,数组变量没有考虑到多个形式,所以最后一个形式的变量覆盖了它们。把这个留在这里,尽管这是一个愚蠢的错误,因为其他人可能也会这样做。这很容易被忽视。