Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 评估参考误差_Javascript_Json - Fatal编程技术网

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

在javascript中,我正在构建一个如下字符串

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不可用。