javascript将数组项添加到表单值

javascript将数组项添加到表单值,javascript,forms,Javascript,Forms,我有一个带有隐藏字段的表单: <input type="hidden" name="newdesc[]" id="newdesc" /> (newdesc_a以前声明为数组) 它更新div OK(businesslist),但不将值分配给newdesc 我相信这很简单,但它让我发疯 是否要为该元素指定数组的特定值 你可以这样用 document.getElementById('newdesc').value = newdesc_a.index; 其中'index'是数组的索引。替

我有一个带有隐藏字段的表单:

<input type="hidden" name="newdesc[]" id="newdesc" />
(newdesc_a以前声明为数组)

它更新div OK(businesslist),但不将值分配给newdesc


我相信这很简单,但它让我发疯

是否要为该元素指定数组的特定值

你可以这样用

document.getElementById('newdesc').value = newdesc_a.index;
其中'index'是数组的索引。替换它。

给定
name=“newdesc[]”
属性,我假设PHP在服务器端。当您提交密钥两次或两次以上时,脚本中只有最后一个值通过
$\u REQUEST
可用。对于以
[]
结尾的键,PHP构建一个数组,并通过
$\u请求['key']
将其提供给脚本。请注意,此行为是特定于应用程序的,没有什么比HTTP级别的数组更好

现在,您需要将一个数组从客户端(Javascript)传递到后端(PHP)。您有两个选择:

  • 使用专有格式,例如使用逗号或冒号分隔值,并在服务器端拆分字符串(或者可以使用JSON、XML等现有格式)

  • 利用PHP语法传递数组

  • 您似乎想采用第二种方式,因此您需要提交如下表格

    <input name="email[]" value="joel@example.com" />
    <input name="email[]" value="mark@people.com" />
    <input name="email[]" value="bill@hello.com" />
    

    如果它是一个数组,它应该是
    newdesc\u a[index]
    ,而不是
    .index
    ,以避免
    syntaxError
    newsdesc\u a现在包含完整的数组,所以我的想法是完全替换newdesc的值。您可以像下面两个选项之一那样执行此操作。1.stringify(数组)并分配字符串值。2.使用for loopvar y=JSON.stringify(newsdesc_a)追加每个值;document.getElementById('newdesc')。值=y;你试过用for循环吗?通过警报(JSON.stringify(newsdesc_a))检查数组是否有值;或console.log(newsdesc_a);(您可以在控制台中看到数组值。)谢谢。我通常将数组作为POST传递没有问题,但这只是让javascript将其分配给表单字段的值的一种情况。如果您希望在PHP中使用预构建的数组,那么您希望采用我的解决方案。如果要将数组分配给输入字段,那么必须在客户端手动序列化(数组->字符串)(例如,通过逗号或JSON连接字符串)并在服务器上反序列化(字符串->数组)。看看能不能尝一尝。请注意,在服务器端,您将没有数组:您将有一个字符串,您将手动将其转换回PHP数组
    <input name="email[]" value="joel@example.com" />
    <input name="email[]" value="mark@people.com" />
    <input name="email[]" value="bill@hello.com" />
    
    var email = $("#autocomplete").value;
    
    // if you really need to keep emails in an array, just
    // emails.push(email);
    
    $('<input type="hidden">').attr({
        name: 'email[]',
        value: email
    }).appendTo('#myForm');