我正在尝试发布一些从某些非形式元素构建的数据,但我似乎无法破解它。

如何以与 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);
}) 
有帮助吗?

解决方案

好的 - 最终发现了它的工作原理,就像它是用serializearray()...

function getTags(){

        var data = new Array();

        $('li.tag.active').each(function() {
                data.push({ 'name':$(this).attr("name"), 'value':$(this).attr("id")});
         });

         $.post("/scripts/php/process.php",{ 
             'data': data,
             funcName : 'tagResults'
        }) 

}

其他提示

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

    $.fn.serializeObject = function()
    {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

然后只需将其添加到您的URL字符串中

var dataToPassToAjax = 'allData=' + myObject.serializeObject();

如果您仅通过一个值,则无需序列化。

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

然后在Process.php中,只需获得 $ _request ['data' 它将拥有您的ID

我从OB那里见过的最佳答案。和Guntram:jQuery serializize / serializearray从不是形式的元素中

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

除输入外,这还可以选择Select和Textarea。甜的。

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

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();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top