如何发送(put) "数组"值转换为XMLHttpRequest对象Ajax请求


How to send (put) "Array" values into XMLHttpRequest Object Ajax Request?

我们可以通过Ajax发送(put)单个值以发送到XMLHttpRequest。但是如何发送"数组"元素的值?

示例# 1 (Ok !)
对于这个简单的值:

<input type="hidden" name="param" value="hello" />

我们可以简单地将值放入XMLHttpRequest对象,如:

xmlhttp.open("GET","ajax.php?param="+document.getElementById("param").value,true);
xmlhttp.send();

以上方法简单可行。
但是送(放)怎么样?"数组"价值观?

示例#2 *(问题与数组值)

<input type="hidden" name="param[]" value="hello" />
<input type="hidden" name="param[]" value="world" />
...
xmlhttp.open("GET","ajax.php?params="+document.getElementById("param").value,true);


注意:服务器端将使用PHP

没有区别(除了名称略有变化)。就HTML、JavaScript和HTTP而言,它们只是name属性中带有[]的元素。只有PHP对表单控件的命名规范很挑剔(我遇到的其他服务器端语言都只处理服务器上的单个或多个值,而不是服务器和客户端都处理)

问题是你最初的方法是行不通的(除了在旧的IE和IE的怪癖模式)。getElementById通过ID获取元素,而您的元素只有名称。

可以指定元素id,也可以使用getElementsByName('param[]')和loop。

请注意,您还需要对数据使用encodeURIComponent,以确保将其安全地插入URL。

var inputs = document.getElementsByName('param[]');
var query = [];
for (var i = 0; i < inputs.length; i++) {
    var input = inputs[i];
    query.push( encodeURIComponent(input.name) + '=' + encodeURIComponent(input.value) );
}
var url = "ajax.php?" + query.join('&');