2011-01-19 51 views
0

我有一個形式正與內容是這樣的:插入表單輸入值到數組,並保留自定義鍵索引

<form id="post"> 
    <div id="related_posts"> 
     <input type="hidden" class='related' name="reladded[72]" value="12" /> 
     <input type="hidden" class='related' name="reladded[34]" value="21" /> 
     <input type="hidden" class='related' name="reladded[46]" value="33" /> 
    <div> 
</form> 

當我這個使用標準型的方法提交,我得到一個數組,它看起來像:

array('72'=> '12,'34'=> '21,'46'=> '33') 

然後我序列化並保存到數據庫。

如何使用JQuery從這些字段中收集相同的元素並將它們轉換爲序列化數組,以便通過AJAX POST提交?

我已經覆蓋了所有的AJAX代碼,但是我還不能迭代元素來收集正確的數組值。 表單中還有其他元素,但這些是我想提交的唯一元素。

我試圖像下面的方法,但無濟於事:

var serialrel = $('#post input:hidden[name="reladded"]').serialize(); 

請幫幫忙!

回答

0

可以將表單元素

$("#post").serialize(); 
+0

`.serializeArray()`可能更適合他。 – jAndy 2011-01-19 09:10:52

0

上使用.serialize()這就是我想出了,拿到格式化陣列按照上面:

reladded = new Array(); 
jQuery("#related-posts").find('input.related').each(function() { 
    jQuery.each(this.attributes, function(i, attrib){ 
    var name = attrib.name; 
    var value = attrib.value; 
    if(name=='name'){ 
     arrayNameAndKey = value; //get 'reladded[*]' (key for array)  
    } 
    if(name=='value'){ 
     arrayValue = value; //get input value 
    } 
    }); 
    //add entry to 'reladded' array from name attr. and input values 
    eval(arrayNameAndKey +"='"+arrayValue+"'"); 
}); 

我通過AJAX提交的陣列後,然後,我必須刪除所有javascript中添加的'undefined'數組值,在我的之間。下面是我用的代碼:

<?php 
    $related = $_POST['reladded']; 
    //clean javascript crud 
    if(is_array($related)){ 
      foreach($related as $key=>$value){ 
     if($value=="undefined") 
     unset($related[$key]); 
    } 
?> 

絕對開放的更優雅的方式來做到這一點...

注意 - 我其實並不需要序列化JQuery的數組,因爲我只是通過AJAX傳遞給PHP。我做了那裏的序列化。

我的主要目標是保留檢索數組中的自定義鍵索引 - 這就是我想要的建議,如果可能的話更容易做到。

相關問題