Php 通过AJAX发送输入数组
我过去曾经处理过javascript,但我正在尝试重新学习它。出于这个原因,我想提出一个javascript解决方案,而不使用JQuery之类的库 我遇到过好几条线索,它们与我的情况很接近,但并不完全匹配 我有一个由PHP动态生成的表单,它从数据库中获取信息,并回显所有表单输入。它们都是代表数据库中条目的复选框。通常我会使用name=“id[value]”,其中value是循环通过的当前条目的id 所以我会有这样的东西:Php 通过AJAX发送输入数组,php,javascript,ajax,forms,Php,Javascript,Ajax,Forms,我过去曾经处理过javascript,但我正在尝试重新学习它。出于这个原因,我想提出一个javascript解决方案,而不使用JQuery之类的库 我遇到过好几条线索,它们与我的情况很接近,但并不完全匹配 我有一个由PHP动态生成的表单,它从数据库中获取信息,并回显所有表单输入。它们都是代表数据库中条目的复选框。通常我会使用name=“id[value]”,其中value是循环通过的当前条目的id 所以我会有这样的东西: <input type="checkbox" name="del[1
<input type="checkbox" name="del[1]"/>
<input type="checkbox" name="del[2]"/>
<input type="checkbox" name="del[3]"/>
当我在表单提交中发布此内容时,我只需获得$u post['del']的值,并将其终止。但是,我尝试将其发送到带有AJAX函数的PHP页面,这样我就可以在不更改页面或刷新的情况下执行这些函数
我的问题是:如何获取所有选中的复选框并将它们发送到PHP页面,以便它能够理解选中了哪些复选框。我的理解是,这需要某种转换。我的第一个想法是循环遍历每个复选框,并获取其索引(或者给它们所有id并获取id),然后将其放入字符串中,然后在PHP端分解
有什么想法吗?谢谢你,sharf。你可以像你说的那样使用jquery并循环 但为了方便起见,我会看一些类似于主干形式的东西 它为您管理您的模型,并允许您通过ajax轻松发送 他们的github有更多的信息和一些例子。这将checkboe放入一个数组中,您可以轻松地处理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("&");
var对=[];
var form=document.getelementbyid(“表单”);
对于(var i=0;i
您应该能够非常简单地修改它,您可以像您所说的那样使用jquery并循环 但为了方便起见,我会看一些类似于主干形式的东西 它为您管理您的模型,并允许您通过ajax轻松发送 他们的github有更多的信息和一些例子。这将checkboe放入一个数组中,您可以轻松地处理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("&");
var对=[];
var form=document.getelementbyid(“表单”);
对于(var i=0;i
您应该能够修改非常简单的使用(MDN)来解决您的问题。
您可以将数组或对象转换为有效的JSON对象,该对象可以通过AJAX发送。使用(MDN)解决您的问题。
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
您可以将数组或对象转换为有效的JSON对象,该对象可以通过AJAX发送。var i,child,str='',arr=Array(),
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
form=document.getElementById('form')
对于(i=0;ivari,child,str='',arr=Array(),
form=document.getElementById('form')
对于(i=0;iI说我不想使用库,即jqueryre在没有jquery的情况下学习javascipt是一个错误。上面的方法是“很难”做到的。$(“#myFormId”).formSerialize();更简单,可以提供您所需的内容。jquery是开源的,因此请查看序列化方法的工作方式。应该注意的是,encodeURIComponent(e.name)
可能不会给出预期的结果,因为它会变成[]
into%5B%5D
我说过我不想使用库,即jqueryr在没有jquery的情况下学习javascipt是一个错误。上述方法是“很难”做到的。$(“#myFormId”).formSerialize();更简单,可以提供您所需的内容。jquery是开源的,因此请查看序列化方法的工作方式。应该注意的是,encodeURIComponent(e.name)
可能不会给出预期的结果,因为它会变成[]
into%5B%5D
你为什么在答案中发布“解决方案”?提问者会提出是否是解决方案的问题。通常我也会给出示例和详细的解释,并引出带有分隔符的部分。这是一种格式习惯。你为什么在答案中发布“解决方案”?提问者会提出是否是解决方案的问题。通常我还张贴示例和详细解释,引导到带有分隔符的部分。这是一种格式习惯。我喜欢这种方法,但它的行为方式与我认为的不一样,可能是我做错了什么。str似乎从来没有包含任何内容。我多次尝试获得str的结果,但什么都没有发生。我最终还是失败了使用修改后的版本。我将所有内容连接成一个字符串进行传递,然后在PHP端进行分解。@sharf:如果所做的操作是关于敏感/重要信息的,我建议您不要使用$\u GET
或编码URL,除非您添加了几个安全进程来对抗任何可能的外部用户交互。@JeffNoe我是通过$\u POST传递的,不是$\u GET。我喜欢这种方法,但它的行为方式与我认为的不一样,也许我做错了什么。str似乎从来没有包含任何内容。我多次尝试获取str的结果,但什么都没有发生。我最终使用了此方法的修改版本。我将所有内容连接到一个string to pass,然后在PHP端进行分解。@sharf:如果所做的操作是关于敏感/重要信息的,我建议您不要使用$\u-GET
或编码URL,除非您添加了几个安全进程来对抗任何可能的外部用户交互。@JeffNoel我是通过$\u-POST传递的,而不是$\u-GET。