我正在使用包含以下元素的表单:
<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 :(得分:0)
您可以在表单元素
上使用.serialize()
$("#post").serialize();
答案 1 :(得分:0)
这是我想出的,按照上面的方式获取格式化数组:
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。我在那里进行了序列化。
我的主要目标是在检索到的数组中保留自定义键索引 - 这就是我想要的方法,如果可能的话,我想要更轻松地做些什么......谢谢!