Jquery / Ajax / PHP foreach循环遍历通过Ajax传递的多维数组

时间:2014-04-26 15:58:49

标签: php jquery ajax arrays

我尝试创建一个Ajax / Php表单。服务器端完美地完成了print_r打印,正是我所期望的。在这个"版本" .php文件我直接创建了ajaxArray。

$ajaxArray = array(0 => array(from => "01/01/2010",
                              to => "01/01/2011",
                              amount => 1000.00),
                   1 => array(from => "01/01/2011",
                              to => "01/01/2012",
                              amount => 100.00),
                   2 => array(from => "01/01/2012",
                              to => "01/01/2013",
                              amount => 100.00)
);

$returnAjax = array();
foreach ($ajaxArray as $value){
    //... Here we do some operations and push result into $returnAjax ...   
} 

print "<pre>";
print_r($returnAjax);
print "</pre>";

我的问题是当我尝试通过Ajax传递ajaxArray时。

客户端:

var ajaxArray = //Some function to create the array
ajaxData = {ajaxArray: JSON.stringify(ajaxArray)};
console.log(ajaxData) //OK, the ajaxArray have the right values  

$.ajax({
    type: 'POST',
    url: '..url-to-php-file',
    data: ajaxData,
    dataType: 'json',
    success: function (data) {
        console.log(data);
    }
});

这是console.log(ajaxData)

ajaxArray: "[{"from":"01/01/2010","to":"01/01/2011","amount":"1000.00"},{"from":"01/01/2011","to":"01/01/2012","amount":"100.00"},{"from":"01/01/2012","to":"01/11/2013","amount":"100.00"}]"

服务器端。这是同一.php文件的更改版本。您可以看到$ {ajaxArray从$_POST获取值,但$returnAjax返回空响应

 $ajaxArray = json_decode($_POST['ajaxArray']);

 $returnAjax = array();
 foreach ($ajaxArray as $value){

     /*... Here we do the same operations as 
     before and push result into $returnAjax ...*/

 }                  

 return json_encode($returnAjax);

似乎当值通过Ajax传递时,foreach循环不起作用,或者出现其他错误。

提前致谢

编辑: 在意大利语中Da = from,A = to,Importo = amount

这是var_dump($_POST['ajaxArray']);

的控制台日志
string(218) "[{"Da":"01/01/2010","A":"01/01/2011","Movimento":"A","Importo":"1000.00"},{"Da":"01/01/2011","A":"01/01/2012","Movimento":"D","Importo":"100.00"},{"Da":"01/01/2012","A":"26/04/2014","Movimento":"D","Importo":"100.00"}]"

这是var_dump( json_decode($_POST['ajaxArray']) )

的控制台日志
string(218) "[{"Da":"01/01/2010","A":"01/01/2011","Movimento":"A","Importo":"1000.00"},{"Da":"01/01/2011","A":"01/01/2012","Movimento":"D","Importo":"100.00"},{"Da":"01/01/2012","A":"26/04/2014","Movimento":"D","Importo":"100.00"}]"
array(3) {
  [0]=>
  object(stdClass)#5 (4) {
    ["Da"]=>
    string(10) "01/01/2010"
    ["A"]=>
    string(10) "01/01/2011"
    ["Movimento"]=>
    string(1) "A"
    ["Importo"]=>
    string(7) "1000.00"
  }
  [1]=>
  object(stdClass)#6 (4) {
    ["Da"]=>
    string(10) "01/01/2011"
    ["A"]=>
    string(10) "01/01/2012"
    ["Movimento"]=>
    string(1) "D"
    ["Importo"]=>
    string(6) "100.00"
  }
  [2]=>
  object(stdClass)#7 (4) {
    ["Da"]=>
    string(10) "01/01/2012"
    ["A"]=>
    string(10) "26/04/2014"
    ["Movimento"]=>
    string(1) "D"
    ["Importo"]=>
    string(6) "100.00"
  }
}

1 个答案:

答案 0 :(得分:1)

在第一个示例中,您正在使用关联数组,但是客户端的返回是json_decoded,关联数组将转换为Objects。 我怀疑你在你的循环中没有考虑到这一点。

$returnAjax = array();
foreach ($ajaxArray as $value){
    // not this - $value['from'];
    // this
    $value->from;   
}