奇怪的行为 - 序列化
Posted
技术标签:
【中文标题】奇怪的行为 - 序列化【英文标题】:strange behaviour - serialize 【发布时间】:2011-10-22 14:04:16 【问题描述】:我有这个代码:
var sizes = ["1/9","1/8","1/7","1/6","1/5","1/4","1/3","1/2","1/1","2/1","3/1","4/1","5/1","6/1","7/1","8/1","9/1"];
var slider = new dijit.form.HorizontalSlider(
value:8,
name:"value"+[i],
slideDuration:0,
onChange:function(val)
dojo.byId('value'+[i]).value = sizes[val];
,
minimum:0,
maximum:sizes.length-1,
discreteValues:sizes.length,
intermediateChanges:"true",
,node);
现在,当我制作时:
$("#custom").submit(function()
var formdata = $("#custom").serializeArray();
$.ajax(
url: "insert.php",
type: "post",
dataType: "json",
data: formdata,
success: function(data)
);
例如,如果我选择值 1/8,它将作为 1 发送,或 9/1 作为 16。
我想要的是发送小数值,显示在输入框中,但正如我所说,没有发送到 insert.php
有什么想法吗?谢谢
【问题讨论】:
试试var sizes = ["1\/9","1\/8","1\/7"];
@3nigma:我不认为那会解决问题。 /
通常不需要转义。根据 OP 的描述,如果“1/8”作为 1 发送,“9/1”作为 16 发送,我觉得应该发送数组索引。
@darioo 你说得对,我没有把9/1
看成 16 部分...
也许你应该使用 .serialize() 而不是 serializeArray()。
【参考方案1】:
在滑块初始化的开始,将创建一个<input type="hidden" name="input0" ... />
。
使用滑块后,input
获取当前滑块值(0
和 sizes.length - 1
之间的数字)。 onChange
设置另一个 html 输入标签,其值来自名为 sizes
的数组。
在提交serializeArray()
时,会获取所有具有name
属性的输入字段的值。
在我的EXAMPLE 中,我为将在 onChange 中填充的输入字段提供了一个 name
属性,因此序列化采用这两个值。
HTML:
<form action="#" id="custom">
<div id="slider0"></div>
<input type="text" id="value0" data-dojo-type="dijit.form.TextBox" name="value0" />
<input type="submit" value="submit" />
</form>
【讨论】:
以上是关于奇怪的行为 - 序列化的主要内容,如果未能解决你的问题,请参考以下文章
java struts2 奇怪的序列化行为(自行舍入大数字)