通过AJAX发送输入数组

时间:2013-07-11 20:27:00

标签: php javascript ajax forms

我过去曾经处理过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端爆炸。

有什么想法?谢谢,沙夫。

3 个答案:

答案 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对象