2010-09-02 61 views
0

我已经动态加载复选框的值使用php,n m在该页面中使用AJAX调用处理页面。如何在javascript中传递动态数组?

<form name="form1" id="form1" action="javascript:wait1();getPass('go.php?**place**='+ document.form1.place.value);" method="post" enctype="multipart/form-data"> 


<input name="place[]" type="checkbox" value="<?=$ro['article_title']?>" /><?=$ro['article_title']?> 

由于复选框由数组组成,所以我没有得到值。

Plz help ..

在此先感谢。

+2

我没有得到问题...复选框的值是一个数组? – Zoidberg 2010-09-02 12:01:49

+0

复选框根据数据库值生成,位于while循环内。所以,我已经将它的名字定义为place []。 现在,当我将[]放置在javasript中时...它不起作用。 – 2010-09-02 12:15:45

回答

0

使用“数组样式”访问表单的属性,如form1['place[]']。由于这是一个复选框,因此可以选择多个值,并返回节点列表form1['place[]']

var places = document.form1['place[]']; 

var checked_places = []; 
for (var i = 0, l = places.length; i < l; i++) { 
    if (places[i].checked) { 
     checked_places.push('place[]=' + places[i].value); 
    } 
} 
var url = "go.php?" + checked_places.join('&'); 

看到一个活生生的例子:http://jsfiddle.net/jrYBz/1/

但为什么不喜欢它,你可以通过列表遍历构建URL?因为无论如何您都在发布表单,为什么不通过服务器端的$_POST读取值呢?

0

引述the spec

IDNAME令牌必须以字母开头([A-ZA-Z]),并且可以是 后跟任意数量的字母, 数字( (“_”),连字符(“ - ”), 下划线(“_”),冒号(“:”)和 句点(“。”)。

因此[]name属性中无效。

+1

但是,当您使用PHP作为服务器端语言来指示应该创建值的数组时,通常会使用它们:http://php.net/manual/en/language.variables.external.php – 2010-09-02 12:22:39