无法正确串联数组

时间:2014-07-31 16:21:05

标签: javascript jquery arrays

我正在尝试序列化一个表单然后提交它,但是自昨晚以来我一直在打我的脑袋,因为我不能替换我的字符串中的一些反弹。

考虑以下数组:

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, ''));,但没有效果。

1 个答案:

答案 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