jQuery表单提交一个多维数组-Ajax/Php


jQuery form submit a multidimensional array - Ajax/Php

我创建了两个非常相似的表单,使用jquery发出Ajax/Php请求。唯一的区别是,第一种形式发送一个数组并得到一个多维数组作为响应,第二种形式发送多维数组并得到另一个多维阵列。

这是第一个表单的jQuery请求

     $('#myFirstformid').submit(function(event) {
            event.preventDefault();
        var ajaxArray = new Array();
        ajaxArray.push(data1);
        ajaxArray.push(data2);
        ajaxArray.push(data3);
        var ajaxData = { ajaxArray: JSON.stringify(ajaxArray) };        
        $.ajax({
                type: 'POST',
                url: '../form-response-first-form.php',
                data: ajaxData,
                dataType: 'json',
                success: function (data) {
                        console.log(data);
                        $.each(data, function(index, element){
      //...do something...
                        });
                }
         });
     });

这是第一个表单的php文件:

<?php
class ajax {
        function calc() {
                $ajaxArray = json_decode(stripslashes($_POST['ajaxArray']));
                $data1 = $ajaxArray['0'];
                $data2 = $ajaxArray['1'];
                $data3 = $ajaxArray['2'];
                 //Array da ritornare al form
                $returnAjax = array();
                /*
                ...make some operation and push data in returnAjax...
                  */    
                return json_encode($returnAjax);
        }
} 
$ajax = new ajax;
echo $ajax->calc();
?>

这里是第二个表单的jQuery请求:

    $('#mySecondformid').submit(function(event) {
                event.preventDefault();
 //Create the multidimensional array to send by getting value from the rows of the table
                var ajaxArray = $( "#preview tbody tr" ).map( function(){
                var tds = $(this).find( "td" ); 
                return {
                    data1: tds.eq(0).html(),
                    data2: tds.eq(1).html(),
                    data3: tds.eq(2).html()        
                };
            }).get();
                var ajaxData = { ajaxArray: JSON.stringify(ajaxArray) };        
                $.ajax({
                    type: 'POST',
                    url: '../form-response-second-form.php',
                    data: ajaxData,
                    dataType: 'json',
                    success: function (data) {
                            console.log(data);
                            $.each(data, function(index, element){
                //...do something...
                            });
                    }
                });
            });

这里是第二个的php文件:

<?php
class ajax {
         function calc() {
                $ajaxArray = json_decode(stripslashes($_POST['ajaxArray']));
                //Array da ritornare al form
                $returnAjax = array();
                foreach ($ajaxArray as $value){
//...make some operation foreach subarray and push data in returnAjax...
                        }
             return json_encode($returnAjax);
         }
}
$ajax = new ajax;
echo $ajax->calc();
?>

我不明白为什么第一种形式正确,但第二种形式不正确。

服务器似乎没有响应,因为控制台日志中没有任何内容。提前感谢

*编辑

@SAM我已经做了一个测试,现在我确信对服务器的请求是正确的,我得到了一个空响应。

在另一个测试中,我在php文件中手动添加了多维数组,php的逻辑是正确的。这是阵列

 <?php    $ajaxArray = array( 
                                    0 => array(from => "01/01/2010",
                                               to => "01/01/2011",
                                               type => "Credit",
                                               amount => 10000.00
                                                ),
                                    1 => array( from => "01/01/2011",
                                                to => "01/01/2012",
                                                type => "Debit",
                                                amount => 200.00),
                                    2 => array( from => "01/01/2012",
                                                to => "01/01/2013",
                                                type => "Debit",
                                                amount => 100.00),
                                    3 => array( from => "01/01/2013",
                                                to => "23/04/2014",
                                                type => "Debit",
                                                amount => 100.00)
            );
    ?>

因此,我认为唯一可能出错的是jQuery代码没有创建正确的多维数组。多维数组是通过从表中获取值来创建的,看看这个fiddlehttp://jsfiddle.net/6q8cS/6/

这里只是一个猜测。。。

$.ajax({
    type: 'POST',
    url: '../form-response-second-form.php',
    data: ajaxData,
    dataType: 'json',
    success: function (data) { }

看起来你有一个拼写错误,所以AJAX调用没有命中正确的url。这与在开发工具中没有看到脚本的响应是一致的。