Jquery 对非表单对象使用序列化数组?

Jquery 对非表单对象使用序列化数组?,jquery,post,serializearray,Jquery,Post,Serializearray,我试图发布一些从一些非表单元素构建的数据,但我似乎无法破解它 如何以与serializeArray()处理表单字段相同的格式创建数组 我尝试了几种不同的方法,但它只选择了最后一个.active标记 $('li.tag.active').each(function() { values = {}; values['tagID'] = $(this).attr('id'); }); $.post("/scripts/php/process.php",{ 'data

我试图发布一些从一些非表单元素构建的数据,但我似乎无法破解它

如何以与
serializeArray()
处理表单字段相同的格式创建数组

我尝试了几种不同的方法,但它只选择了最后一个
.active
标记

$('li.tag.active').each(function() {
    values = {};
    values['tagID'] = $(this).attr('id');
});

$.post("/scripts/php/process.php",{     
    'data': data,
    funcName : 'tagResults'
},function(results){
    $("#results").html(results);
}) 

将此函数添加到JS代码中,可以使用“name”和“value”属性序列化任何对象。。我通常使用它来序列化表单。我知道您说过这些控件是无格式的,但我可以想象,这可以用来序列化任何具有名称/值属性的对象。更改它以查找对象的其他属性(如ID)看起来也很容易。很难确切地说出您在那里做什么,因为您没有显示“数据”的定义或“值”的用法

然后将其添加到url字符串中

var dataToPassToAjax = 'allData=' + myObject.serializeObject();
如果只传递一个值,则不需要序列化

$.post("/scripts/php/process.php",{ 'data': 'data=' + $('li.tag.active').id, funcName : 'tagResults' }). 

然后在process.php中,只需获取$\u REQUEST['data']的值,它将拥有您的ID

确定-最终找到它,它的工作方式与serializeArray()的输入字段完全相同


使用此函数,您可以使任意一组元素可序列化:

function makeSerializable(elem) {
  return $(elem).prop('elements', $('*', elem).andSelf().get());
}
然后你可以这样使用它:

var arr = makeSerializable('li.tag.active').serializeArray();


我从Ob看到的最好答案。和Guntram:

$('div:input').serializeArray()


除了输入之外,还将选择select和textarea。太好了。

太好了。我自己也要试试:)谢谢达奇-试过这个,但似乎什么也没得到,但也许我用错了?$.post(“/scripts/php/process.php”、{'data':$('li.tag.active').serializeObject()、funcName:'tagResults')是否正确?如果只传递一个对象,则不需要序列化。$。post(“/scripts/php/process.php”,{'data':'data='+$('li.tag.active').id,funcName:'tagResults'})。然后在process.php中,只需获取$_REQUEST['data']的值,它就会让您的IDi尝试序列化所有li.tag.active对象,因此我要序列化的对象不止一个。基本上我正常使用;var data=$(“input.toPost”).serializeArray();它适用于.toPost类的任何输入。我假设$('li.tag.active').serializeObject()的工作方式是相同的,但似乎不是这样?li元素是标签标题
  • 标签标题2
  • 标签标题3
  • -很抱歉之前没有弄清楚!
    function makeSerializable(elem) {
      return $(elem).prop('elements', $('*', elem).andSelf().get());
    }
    
    var arr = makeSerializable('li.tag.active').serializeArray();
    
    var $elem = $('li.tag.active');
    var data = makeSerializable($elem).serialize();