簡體   English   中英

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代碼沒有創建正確的多維數組。 多維數組是通過從表中獲取值來創建的,請看此提琴http://jsfiddle.net/6q8cS/6/

只是一個瘋狂的猜測...

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

看來您有錯字,因此AJAX呼叫未正確輸入網址。 這與在開發工具中看到腳本無響應相一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM