Javascript Ajax-操作正确的数组以传递给PHP

Javascript Ajax-操作正确的数组以传递给PHP,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,大家好,我是jQuery的新手,遇到过这种问题 我试图从jquery创建一个数组,将其传递给php控制器(CI) 示例HTML <input type="text" acc_id="5" class="input" /> <input type="text" acc_id="10" class="input" /> <input type="text" acc_id="15" class="input" /> <input type="text" acc

大家好,我是jQuery的新手,遇到过这种问题

我试图从jquery创建一个数组,将其传递给php控制器(CI)

示例HTML

<input type="text" acc_id="5" class="input" />
<input type="text" acc_id="10" class="input" />
<input type="text" acc_id="15" class="input" />
<input type="text" acc_id="20" class="input" />
下面是我用Php的回应

Array
(
    [array] => Array
    (
        [0] => 
        [1] => 
        [2] => 
        [3] => 
        [4] => 
        [5] => value 1
        [6] => 
        [7] => 
        [8] => 
        [9] => 
        [10] => value 2
        [11] => 
        [12] => 
        [13] => 
        [14] => 
        [15] => value 3
        [16] => 
        [17] => 
        [18] => 
        [19] => 
        [20] => value 4
    )

)
注意,响应给了我0-20之间的键

但我希望它是这样的:

Array
(
    [array] => Array
    (
        [5]  => value 1 
        [10] => value 2
        [15] => value 3
        [20] => value 4
    )
)

我可以通过某种方式让它在Php中工作,但我想通过我的javascript代码来纠正这一点。对不起,我的英语不好:)

您可以使用:数组\u过滤器

array_filter($array);
前面有一个问题涉及该主题:


您可以使用:数组\u过滤器

array_filter($array);
前面有一个问题涉及该主题:


在php文件中尝试以下代码:

$test = array('','',1,2,'',3); //your array
foreach($test as $i=>$k)
{
    if(empty($k))
    {
        unset($test[$i]);
    }
}
print_r($test);
输出:

Array ( [2] => 1 [3] => 2 [5] => 3 )
或者您可以使用过滤器

代码:


在php文件中尝试以下代码:

$test = array('','',1,2,'',3); //your array
foreach($test as $i=>$k)
{
    if(empty($k))
    {
        unset($test[$i]);
    }
}
print_r($test);
输出:

Array ( [2] => 1 [3] => 2 [5] => 3 )
或者您可以使用过滤器

代码:


你说得对。这显然是应该在JS代码中解决的问题

jQuery有一个用于表单的本机序列化函数。请参阅使用它的示例,这可能是解决问题的更好方法

另外,请注意javaScript没有真正的关联数组。您只能以与其他语言(如PHP)中的关联数组类似的方式使用对象

编辑

好的,在这种情况下,您的代码是正确的。您只需要使用对象而不是数组

只需使用:

var arrayVal = {};
而不是:

var arrayVal = [];

你说得对。这显然是应该在JS代码中解决的问题

jQuery有一个用于表单的本机序列化函数。请参阅使用它的示例,这可能是解决问题的更好方法

另外,请注意javaScript没有真正的关联数组。您只能以与其他语言(如PHP)中的关联数组类似的方式使用对象

编辑

好的,在这种情况下,您的代码是正确的。您只需要使用对象而不是数组

只需使用:

var arrayVal = {};
而不是:

var arrayVal = [];
//您可以使用此函数并将其删除为空数组
http://www.php.net/manual/en/function.array-filter.php
//您可以使用此函数并将其删除为空数组
http://www.php.net/manual/en/function.array-filter.php

我没有这个字段的表单,我只是在提取属性acc_id(用于键id)及其值,呵呵,这就设置好了,谢谢老兄!太棒了。总是很乐意帮忙。:-)我没有这个字段的表单,我只是在提取属性acc_id(用于key id)及其值,呵呵,这就可以了,谢谢你,伙计!太棒了。总是很乐意帮忙。:-)这是一些很好的关于这些东西的进一步阅读。谢谢,伙计,这在Php中是有效的,但我一直在寻找准确的js解决方案,不管怎样,silver帮了我的忙,但这是一件在未来需要保留的事情。:)谢天谢地,这在Php中是可行的,但我一直在寻找准确的js解决方案,不管怎样,silver帮了我的忙,但这也是一件在未来需要保留的事情。:)