我正在尝试序列化一个表单然后提交它,但是自昨晚以来我一直在打我的脑袋,因为我不能替换我的字符串中的一些反弹。
考虑以下数组:
files = ["1406822377238.jpg", "1406822385416.jpg"]
当我对其值进行字符串化时,将其设置为如此输入:
$('#images').val(JSON.stringify(files));
输入的值变为
value="["1406822377238.jpg","1406822385416.jpg"]`
删除我不需要的括号我这样做:
$('#images').val("" + $('#images').val().slice(1,-1) + "");
然后输入值变为
value=""1406822377238.jpg","1406822385416.jpg""
现在删除开头和结尾双引号我这样做:
$('#images').val("" + $('#images').val().slice(1,-1) + "");
现在我的输入值是
value="1406822377238.jpg","1406822385416.jpg"
在控制台中看起来很好但在我的数据库中我得到了这个,为什么?
"image": [
"1406823278844.jpg\",\"1406823281193.jpg"
]
我期待这一点。
"image": [
"1406823278844.jpg","1406823281193.jpg"
]
我尝试删除反斜杠$('#images').val($('#images').val().replace(/\\/g, ''));
,但没有效果。
答案 0 :(得分:1)
如果端点需要表单编码数据,那就是您需要使用的数据。传递密钥的值列表只是指定该密钥两次:
image=1406822377238.jpg&image=1406822385416.jpg
您需要多个<input>
元素才能在<form>
中执行此操作。假设它们被隐藏了:
var form = $('#my-form');
form.find('input[name=image]').remove();
form.append(files.map(function (file) {
return $('<input>', { type: 'hidden', name: 'image', value: file });
});
如果端点是PHP,那么它将使用名称image[]
而不是image
。