如何将html数据属性转换为json

时间:2011-12-14 00:24:10

标签: jquery json html5

说我有这个

<div id="x" data-id='1' data-prop1='peace' data-prop2='out'>Text</div>

在jQuery中我可以得到像这样的数据

var row = $('#x')

var x = {
    id : row.data('id'),
    prop1: row.data('prop1'),
    prop2: row.data('prop2'),
};

如果我可以做这样的事情会更方便

var row = $('#x');
var x = row.data.serialize();

任何人都知道怎么做?

修改

我忘了提到var x = row.data()会完成这项工作,但那里有所有这些jquery垃圾。

我希望在获得数据后将数据作为ajax请求的一部分发送。

例如

remove: function (row, g, o) {

if (confirm(o.deleteConfirmation)) {

                    var url = o.deleteAction;
                    var data = row.data();

                    $.ajax({
                        url: url,
                        type: 'POST',
// THIS WORKS                                
//                            data: {
//                                id: row.data('id'),
//                                applicationId: row.data('applicationId')
//                            },
// THIS DOESN'T                                
                        data : data,
                        success: function (result) {
                            g.html(result.Html);
                            methods.rebind(g, o);
                        }
                    });
                }
 }

编辑:我的'工作'解决方案

我通过从数据对象

中删除jQuery {some number}来实现它

首先我从here

抓住了这个
if (!String.prototype.startsWith) {
    String.prototype.startsWith = function(str) {
        return !this.indexOf(str);
    };
}

然后我必须这样做:

var rowData = row.data();

var data = {};

for(var propertyName in rowData) {
    if(!propertyName.startsWith('jQuery'))
        data[propertyName] = rowData[propertyName];
}

1 个答案:

答案 0 :(得分:5)

你可以不带参数调用.data(),它应该返回一个包含所有元素属性的对象:

var row = $('#x'); // Won't work as your element's ID is invalid, but oh well.
var x = row.data();

演示:http://jsfiddle.net/kYf3t/1/


有人可以帮忙删除__proto__财产吗?我无法通过delete x['__proto__']删除它。