0

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

<input type="hidden" name="newdesc[]" id="newdesc" />

我有一个自动查找和一个加号按钮,因此加号按钮将自动查找的字段值添加到数组中:

newdesc_a.push(document.getElementById('autocomplete1').value);
var x=document.getElementById("businesslist");
x.innerHTML=newdesc_a;
document.getElementById('newdesc').value = newdesc_a;

(newdesc_a 之前被声明为一个数组)

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

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

4

2 回答 2

2

鉴于该name="newdesc[]"属性,我假设 PHP 在服务器端。当您两次或多次提交密钥时,脚本中只有最后一个值通过$_REQUEST. 相反,对于以 结尾的键[],PHP 会构建一个数组并通过$_REQUEST['key']. 请注意,此行为是特定于应用程序的,在 HTTP 级别没有像数组这样的东西。

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

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

  2. 利用 PHP 语法传递数组

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

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

$_REQUEST如果您像这样构建表单,PHP 将能够访问一个普通数组。现在,您遇到了按需以编程方式构建表单的问题。这是我能想到的最好的(jQuery):

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');
于 2012-10-23T11:10:05.020 回答
0

您想为该元素分配一个特定的数组值吗?

你可以这样使用。

document.getElementById('newdesc').value = newdesc_a.index;

其中'index'是数组的索引。代替它。

于 2012-10-23T10:49:54.263 回答