1

在javascript中,我正在建立一个这样的字符串......

var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: " + userName + "}";

这稍后会像这样通过和 eval 语句......

var obj = eval('(' + txt + ')');

当发生这种情况时,我收到一个参考错误,指出用户名变量的值未定义。

有谁知道这是什么原因?我想念的东西很简单吗?

4

2 回答 2

1

您在用户名变量周围缺少引号:

var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}";

我假设您想将用户名的字符串值存储在您的 userName 变量中。由于它没有被引用,因此将用户名的值视为变量。因此,例如,如果用户名是“testValue123”,它将userName: testValue123不是userName: 'testValue123'

于 2012-07-06T15:53:53.017 回答
0

如果 jQuery 可用eval(),我建议使用$.parseJSON()方法而不是 :

jQuery:

$(function(){
    var userName = 'me';

    var txt = '{"authenticationToken": 1, "authenticated": 2, "authenticationTokenExpiry": 3, "sessionTimeoutMinutes": 4, "userName": "' + userName + '"}';

    var obj = $.parseJSON(txt);
});

注意:必须修改字符串以满足格式良好的 JSON 字符串的要求

演示:http: //jsfiddle.net/WTC7k/

但是,您遇到 valueuserName未定义错误的原因是您必须将字符串括在引号中以允许 eval() 正常工作:

var userName = 'me';

var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}"; 

var obj = eval('(' + txt + ')'); 

演示:http: //jsfiddle.net/9rtgK/

于 2012-07-06T15:50:07.233 回答