Javascript 评估参考误差
在javascript中,我正在构建一个如下字符串Javascript 评估参考误差,javascript,json,Javascript,Json,在javascript中,我正在构建一个如下字符串 var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: " + userName + "}"; var obj = eval('(' + txt + ')'); 这是后来通过和评估的声明,像这样 var txt = "{authenticationToken: 1
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: " + userName + "}";
var obj = eval('(' + txt + ')');
这是后来通过和评估的声明,像这样
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: " + userName + "}";
var obj = eval('(' + txt + ')');
发生这种情况时,我会收到一个引用错误,表示username变量的值未定义
有人知道原因吗?我缺少的是简单的东西吗?如果jQuery可用,我建议使用该方法,而不是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 + ')');
演示:如果jQuery可用,我建议使用该方法,而不是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 + ')');
演示:用户名变量周围缺少的引号:
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}";
我假设您希望将用户名的字符串值存储在username变量中。因为它没有被引用,所以它将username的值视为一个变量。因此,例如,如果用户名是“testValue123”,它将是
username:testValue123
,而不是username:'testValue123'
用户名变量周围缺少的引号:
var txt = "{authenticationToken: 1, authenticated: 2, authenticationTokenExpiry: 3,sessionTimeoutMinutes: 4,userName: '" + userName + "'}";
我假设您希望将用户名的字符串值存储在username变量中。因为它没有被引用,所以它将username的值视为一个变量。因此,例如,如果用户名是“testValue123”,那么它应该是
username:testValue123
而不是username:'testValue123'
,您不使用它来代替eval
?eval(“(“+txt+”)”)
?但无论如何,哪里定义了userName
?这是在旧黑莓手机上运行的,json.parse不起作用。你确定你的变量不是被称为userName
,而是被称为userName
?很抱歉,我错过了帖子中的+符号,但它们在真实的代码中。你为什么不使用它来代替它eval
?eval(“(“+txt+”)”)
?但无论如何,哪里定义了userName
?这是在旧黑莓手机上运行的,json.parse不起作用。你确定你的变量不是被称为userName
,而是被称为userName
?很抱歉,我错过了帖子中的+符号,但它们存在于真实的代码中。是的,这很理想,但遗憾,这段代码适用于黑莓手机旧型号上的应用程序。JSON.parse不可用。是的,这将是理想的,但遗憾的是,这段代码适用于旧型号的Blackberry应用程序。JSON.parse不可用。