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

Ajax - Manipulate a correct array to pass to PHP

本文关键字:数组 PHP 操作 一个 Ajax      更新时间:2023-09-26

大家好,我是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" />
Javascript

$('#save').click(function(){
    var arrayVal = [];
    $('.input').each(function(key, value){
        var id = $(this).attr('acc_id');
        var inputValue = $(this).val();
        arrayVal[id] = inputValue;
    });
    $.ajax({
        url:  siteurl + '/sample_save',  
        type: 'POST',
        dataType: 'json',
        data: {'accounts' : arrayVal},
        success: function(data) {}
    });
});

这是我在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代码纠正这些东西。对不起,我的英语不好

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

jQuery有一个原生的表单序列化函数。请看这里的一个例子来使用它,这可能是一个更好的方法来解决你的问题。

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

编辑

好的,在这种情况下,你的代码没问题。你只需要使用一个对象而不是一个数组。

只使用:

var arrayVal = {};

代替:

var arrayVal = [];

在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 )
或者你可以使用过滤器 代码:

$test = array('','',1,2,'',3);
$test = array_filter($test);
print_r($test);

可以使用:array_filter

array_filter($array);

前面有一个关于这个主题的问题:删除空数组元素

PHP.net中的数组过滤器

     //You can use this function and it's remove to empty array  
    <?php
             array_filter($array);
      ?>

  http://www.php.net/manual/en/function.array-filter.php