我創建了兩個非常相似的表單,使用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/
嘿,首先檢查第二個窗體中的'ajaxData'是否有值,如果存在,請確保它是一個正確的JSON對象。其次,既然你已經說過了,你會在console.log()中得到一個空的響應,這意味着你對服務器的請求是正確的,並且確保你獲得了HTTP狀態200,那麼PHP –
的邏輯中肯定有一些錯誤嗨,我知道ajaxArray(multidimensionale數組)中有值,所以如果這些代碼:「var ajaxData = {ajaxArray:JSON.stringify(ajaxArray)};」是正確的,它表明ajaxData具有正確格式的JSON值..最後我說我沒有得到任何答覆。 – fasenderos