将JSON对象分配给数据字段

时间:2015-06-11 07:21:55

标签: javascript jquery json

我使用javascript动态创建一行,下面是代码:

var row2 = "<tr><td><a href='#editModal' class='modal_trigger' data-info="+name+" data-toggle='modal'>Edit</a></td></tr>";

这里的var是一个JSON对象。稍后,当用户单击它并且可以检索值时,会将其传递给模态。但是,简单地声明var就像我上面所做的那样设置了data-info=[Object object]

JSON变量的内容是:

Object
  name: "Test 8"
  created_at: "2015-06-10 16:54:45"
  id: 128
  updated_at: "2015-06-10 16:54:45"
  __proto__: Object

有办法吗?

5 个答案:

答案 0 :(得分:1)

这里有一些建议:

  • 不要使用var作为变量名称,即使在示例中(真正的代码甚至无法编译)
  • 请确保您了解JSON是什么,因为Javascript对象!= JSON。显然,var在这种情况下是一个JS对象。

说,您可以将任何不包含函数的JS对象转换为JSON.stringify(variable)的JSON字符串:

更新:这就是我的意思:

var row2 = '<tr><td><a href="#editModal" class="modal_trigger" data-info="'+
        name+'" data-toggle="modal">Edit</a></td></tr>';

(请注意使用引号的更改)

答案 1 :(得分:1)

如果你得到[object Object]那么它不是JSON,是一个对象 JSON 是一个包含序列化对象的字符串,它用作轻量级数据交换格式。

尝试将对象序列化为JSON

"...data-info=" + JSON.stringify(myVar||null) + " data..."

这里我向null添加了强制,以防止变量不包含数据时出错。

答案 2 :(得分:0)

请使用JSON.stringify(yourVar)

var row2 = "<tr><td><a href='#editModal' class='modal_trigger' data-info="+JSON.stringify(yourVar)+" data-toggle='modal'>Edit</a></td></tr>";

答案 3 :(得分:0)

将您的name变量存储在某个映射或数组中,将ID或索引存储在您的行中,并使用它来稍后获取它:

// using a mapping :
var infoMapping = {};

function createRow (name) {
    // this will work if 'id' is a key which identifies the object
    infoMapping[name.id] = name;
    var row2 = "<tr><td><a href='#editModal' ... data-infoid="+name.id+" ... ";
    // etc ...
}

function editModal (nRow) {
    var infoid = $(nRow).attr('data-infoid');
    var name = infoMapping[infoid];

    // use name ...
}

答案 4 :(得分:0)

var x = {a:10, b:20};
var html = "<div data-info='" + JSON.stringify(x) + "'></div>";

结果是

"<div data-info='{"a":10,"b":20}'></div>"