2010-05-28 13 views
0

我有4個想要傳遞給php進行處理的serailized數組。什麼是將它們組合成一個單一的陣列>的最佳方式JQuery創建一個數組 - 如何/什麼是最好的

例如:

serial_1 = $('#col1').sortable('serialize'); 
serial_2 = $('#col2').sortable('serialize'); 
serial_3 = $('#col3').sortable('serialize'); 
serial_4 = $('#col4').sortable('serialize');` 

每個串行化陣列涉及的頁面(COL1,COL2等)我需要做什麼的列/部/想要做的是創建一個單個數組,將序列化數組放入另一個數組中作爲單個帖子。

例如:

var new_array = serilaize(col_1(serial_1),col2(serial_2),col3,(serial_3),col4(serial_4)) 

我知道這是不對的,因爲我有JQuery的不知道如何糾正正確的語法。

這個新陣列要通過AJAX發佈這樣的:提前

 $.ajax({ 
    url: "test.php", 
    type: "post", 
    data: new_array, 
    error: function(){ 
    alert('SOME ERROR MESSAGE'); 
    } 
    }); 

感謝

回答

3

您可能只需要創建一個疊加對象/數組和jsonize它,像

var senderobj = []; 
$('*[id^=col]').each(function(){ 
    senderobj.push($(this).sortable('serialize'); 
} 

if(window.JSON) senderobj = window.JSON.stringify(senderobj); 

$.ajax({ 
//... 
data: { 
    formdata: senderobj 
} 
}); 

用您需要的元素類型替換通用選擇器(*)

要創建一個數組,您可以始終調用$.makeArray(),它會從「類似數組的對象」中創建一個真正的javascript數組。 事實上,調用.serialize()只是在內部調用.serializeArray()而不是調用.makeArray()。

+0

好吧jAndy認爲我明白了,但cols沒有形式,所以這是你的意思嗎? var senderobj = []; $( '#標識^ = COL')每個(函數(){ senderobj.push($(本).serialize());} $就({ \t \t地址:「測試。 PHP」, \t \t類型: 「後」, \t \t數據:senderobj, \t \t錯誤:函數(){ \t \t警報(serial_1); \t \t} \t \t}); – user351657 2010-05-28 05:55:48

+0

我更新了例子ortable的方法'serialize'會將id轉換爲內部的form/ajax可提交字符串。 – jAndy 2010-05-28 06:04:11

+0

再次感謝jAndy,請接受我的謝意,以及我的愚蠢,我非常習慣於php,但是JQuery/Java是我多年來避免的。所以我真的很「愚蠢」在這裏。現在你是否說我可以像這樣在一個「禽類突襲」中做所有事情: var senderobj = []; (window.JSON)senderobj =('。column [id^= col]')。each(function(){ senderobj.push($(this).sortable('serialize'); } if window.JSON.stringify(senderobj); $ .ajax({// ... data:{ $ .ajax({url:「test。php「,輸入:」post「,data:senderobj, } }); column是每個col(col1,col2等)的css類如果我記得id ^增加了id oc col? – user351657 2010-05-28 06:10:45

相關問題