我过去曾经处理过javascript,但我正在尝试重新学习它。出于这个原因,我想在不使用像JQuery这样的库的情况下提出一个javascript解决方案。
我遇到了几个主题,但它们已经接近但与我的情况并不完美匹配。
我有一个由PHP动态生成的表单,它从数据库中获取信息,并回显所有表单输入。它们都是表示数据库中条目的复选框。通常我会使用name =“id [value]”,其中value是当前条目循环的id。
所以我会有这样的事情:
<input type="checkbox" name="del[1]"/>
<input type="checkbox" name="del[2]"/>
<input type="checkbox" name="del[3]"/>
当我在表单提交上发布此内容时,我只会获得$ _POST ['del']的值并将其称为一天。但是,我正在尝试将其发送到具有AJAX功能的PHP页面,这样我就可以在不更改页面或刷新的情况下执行这些功能。
我的问题是:如何获取所有复选框(已选中)并将其发送到PHP页面,以便了解哪些复选框已经过检查。我的理解是,这将需要某种转换。我的第一个是循环遍历每个复选框,并获取其索引(或给它们所有ID并获取id)并将其放入一个字符串,然后我可以在PHP端爆炸。
有什么想法?谢谢,沙夫。
答案 0 :(得分:1)
var i, child, str='', arr = Array(),
form = document.getElementById('form')
for(i=0; i<form.childNodes.length; i++) {
// grab the element
var child = form.childNodes[i];
// make sure it is an input and a checkbox
if(child.tagName!='INPUT' || child.getAttribute('type')!='checkbox') continue
// if the checkbox is checked, add the name and value to a url string
if(child.checked)
arr.push(child.getAttribute('name')+'='+encodeURIComponent(child.value))
}
}
// make the URL string
str = arr.join('&')
// now you can use this as a url:
SomeAjaxUrl + str
然后,在PHP中:
<?php
$checked_options = $_REQUEST['del'];
print_r($checked_options);
?>
答案 1 :(得分:0)
你可以像你说的那样使用jquery并循环播放
http://api.jquery.com/attribute-starts-with-selector/
但为了方便起见,我会看一下与骨干表格类似的内容https://github.com/powmedia/backbone-forms
为您管理您的模型,并允许您轻松地通过ajax发送。
他们的github上有更多信息以及一些例子。这会将checkboes放在一个可以轻松处理php端的数组中
编辑:纯javascript
var pairs = [];
var form = document.getelementbyid("form");
for ( var i = 0; i < form.elements.length; i++ ) {
var e = form.elements[i];
pairs.push(encodeURIComponent(e.name) + "=" + encodeURIComponent(e.value));
}
var output= pairs.join("&");
你应该可以修改那个非常简单的
答案 2 :(得分:0)
使用JSON.stringify()
( MDN )来解决您的问题。
您可以将数组或对象转换为可以通过AJAX发送的有效 JSON对象。