2011-04-26 98 views
9

我想做一些相當簡單的事情,但我似乎無法找到解決方案。我想使用jQuery的.ajax函數將多維數組發佈到php頁面,但我似乎無法正確序列化數組。發佈一個數組使用jquery ajax

的代碼如下

var dataToSend = new Array(); 
    dataToSend["page"] = location.href; 
    dataToSend["data"] = new Array(); 
    var dataindex = 0; 
    jQuery(".myclass").each(function(){ 
     dataToSend["data"][dataindex]=new Array(); 
     dataToSend["data"][dataindex]["selector"] = unique_selector(jQuery(this), ""); 
     dataToSend["data"][dataindex]["contents"] = jQuery(dataToSend["data"][dataindex]["selector"]).html(); 
    }); 
    jQuery.ajax({ 
     type: 'POST', 
     url: "/main/save.php", 
     data: JSON.stringify(dataToSend), 
     dataType: "json", 
     success: function(data){alert(data);} 
    }); 

基本上我不知道如何正確地傳遞dataToSend陣列。現在螢火蟲顯示該帖子爲空,即使該數組裝載了各種好東西。

感謝,

丹尼爾

回答

11

你定義new Array();,但你使用它們作爲new Object()。嘗試使用對象。

試試這個:

var dataToSend = { 
    page: location.href, 
    data: [] 
}; 
var dataindex = 0; 
jQuery(".myclass").each(function(){ 
    var temp = unique_selector(jQuery(this), ""); 
    dataToSend.data[dataindex++] = { 
     selector: temp, 
     contents: jQuery(temp).html() 
    }; 
}); 
jQuery.ajax({ 
    type: 'POST', 
    url: "/main/save.php", 
    data: JSON.stringify(dataToSend), 
    dataType: "json", 
    success: function(data){ alert(data); } 
}); 
+0

我認爲沒有相當於數組的JSON.stringify?無論如何,現在工作,以解決PHP方面。非常感謝你。 – Daniel 2011-04-26 20:20:30

+0

@mkeats。別擔心。 @Daniel。數組是整數索引列表。對象是關鍵索引列表。 JSON需要有完美的JavaScript變量,否則它不會轉換。 – jerone 2011-04-26 20:27:37

+0

@Daniel,JSON.stringify([{name:'Dude'},{name:'Guy',phone:234556}])yield 「[{」name「:」Dude「},{」name「:」蓋伊 「 」手機「:234556}]」 – 2012-04-16 23:15:26

0

從PHP幫助頁面摘自:

你可能在表單輸入多維數組

HTML例子:

<input name="data[User][firstname]" type="text" /> 
<input name="data[User][lastname]" type="text" /> 
... 

PHP內提交y後腳本 您可以同時訪問單個元素,像這樣:

$firstname = $_POST['data']['User']['firstname']; 
... 
+0

是的,我看到這個選項,但我不發佈表單的內容。這是我組裝的一個javascript數組。我需要一種將數組轉換爲json字符串的方法。 – Daniel 2011-04-26 20:09:11

+0

你想將一個JavaScript數組轉換爲Json字符串? – slandau 2011-04-26 20:10:17

0

使用

data: { '': dataToSend } 

我用這種類似的場景,它的工作就像魅力。