奇怪的行为 - 序列化

6

i have this code:

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"]; - Rafay
3
@3nigma说:“我不认为那会解决问题。/通常不需要转义。从原帖的描述来看,如果将'1/8'发送为1,'9/1'发送为16,那么听起来是发送了数组索引。” - darioo
@darioo 你是正确的,我没有把“9/1”看作是16的一部分... - Rafay
也许你应该使用 .serialize() 而不是 serializeArray()。 - Ivan Castellanos
1个回答

3
在滑块初始化时,会创建一个名为<input type="hidden" name="input0" ... />的标签。
使用滑块后,该input将获取当前滑块值(一个介于0sizes.length - 1之间的数字)。onChange设置另一个html输入标记,其值来自名为sizes的数组。
在提交时,serializeArray()将获取所有具有name属性的输入字段的值。
在我的示例中,我给将在onChange中填充的输入字段添加了一个name属性,因此序列化会获取这两个值。
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接