我使用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
有办法吗?
答案 0 :(得分:1)
这里有一些建议:
var
作为变量名称,即使在示例中(真正的代码甚至无法编译)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>"