2014-04-22 63 views
0

我創建了兩個非常相似的表單,使用jQuery來創建Ajax/Php請求。唯一的區別是第一個表單發送一個數組並獲得多維數組的響應,第二個表單發送一個多維數組並獲得另一個多維數組。jQuery表單提交一個多維數組 - Ajax/Php

這是第一次表

 $('#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... 
         }); 
       } 
     }); 
    }); 

這是第1形態的PHP文件的jQuery的要求:

<?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/

+0

嘿,首先檢查第二個窗體中的'ajaxData'是否有值,如果存在,請確保它是一個正確的JSON對象。其次,既然你已經說過了,你會在console.log()中得到一個空的響應,這意味着你對服務器的請求是正確的,並且確保你獲得了HTTP狀態200,那麼PHP –

+0

的邏輯中肯定有一些錯誤嗨,我知道ajaxArray(multidimensionale數組)中有值,所以如果這些代碼:「var ajaxData = {ajaxArray:JSON.stringify(ajaxArray)};」是正確的,它表明ajaxData具有正確格式的JSON值..最後我說我沒有得到任何答覆。 – fasenderos

回答

0

只是胡亂猜測這裏...

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

它看起來像你有一個錯字等等AJAX呼叫不是擊中正確的網址。這與在開發工具中看不到腳本的響應是一致的。

+0

感謝您的回覆。我寫錯了這篇文章,但在「真正的」形式的網址是正確的 – fasenderos