1

我过去处理过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 端展开。

有什么想法吗?谢谢,夏尔夫。

4

3 回答 3

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);
?>
于 2013-07-11T20:46:13.937 回答
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("&");

你应该可以很容易地修改它

于 2013-07-11T20:30:14.043 回答
0

使用JSON.stringify()( MDN ) 来解决您的问题。您可以将数组或对象转换为可以通过 AJAX 发送的有效JSON 对象。

于 2013-07-11T20:41:22.780 回答