Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过AJAX发送输入数组_Php_Javascript_Ajax_Forms - Fatal编程技术网

Php 通过AJAX发送输入数组

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

我过去曾经处理过javascript,但我正在尝试重新学习它。出于这个原因,我想提出一个javascript解决方案,而不使用JQuery之类的库

我遇到过好几条线索,它们与我的情况很接近,但并不完全匹配

我有一个由PHP动态生成的表单,它从数据库中获取信息,并回显所有表单输入。它们都是代表数据库中条目的复选框。通常我会使用name=“id[value]”,其中value是循环通过的当前条目的id

所以我会有这样的东西:

<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;i
vari,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。