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

时间:2014-04-22 14:06:10

标签: php jquery ajax

我创建了两个非常相似的表单,使用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代码不能创建正确的多维数组。通过从表中获取值来创建多维数组,请查看此小提琴http://jsfiddle.net/6q8cS/6/

1 个答案:

答案 0 :(得分:0)

这里只是猜测......

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

看起来你有一个拼写错误,所以AJAX来电没有打到正确的网址。这与在开发工具中看不到脚本的响应一致。