在javascript中我正在建立一个像这样的字符串......
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: " + userName + "}";
这是后来通过这样的eval语句......
var obj = eval('(' + txt + ')');
发生这种情况时,我收到一条引用错误,指出用户名变量的值未定义。
有谁知道这个的原因?我错过了一些简单的东西吗?
答案 0 :(得分:1)
您在用户名变量周围缺少引号:
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}";
我假设您要在userName变量中存储用户名的字符串值。由于没有引用,因此将username的值视为变量。例如,如果用户名为“testValue123”,则为userName: testValue123
而不是userName: 'testValue123'
答案 1 :(得分:0)
如果jQuery可用,我建议使用$.parseJSON()方法代替eval()
:
<强> jQuery的:强>
$(function(){
var userName = 'me';
var txt = '{"authenticationToken": 1, "authenticated": 2, "authenticationTokenExpiry": 3, "sessionTimeoutMinutes": 4, "userName": "' + userName + '"}';
var obj = $.parseJSON(txt);
});
注意:必须修改字符串以满足格式良好的JSON字符串的要求
但是,您遇到错误userName
的值未定义的原因是您必须将字符串括在引号中以允许eval()正常工作:
var userName = 'me';
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}";
var obj = eval('(' + txt + ')');