1

javascriptで私はこのような文字列を構築しています...

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

これは後で通過し、このような評価ステートメント...

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

これが発生すると、username変数の値が未定義であるという参照エラーが発生します。

誰かがこれの理由を知っていますか?私が行方不明になっているのは単純なことですか?

4

2 に答える 2

1

ユーザー名変数の前後に欠落している引用符:

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

ユーザー名の文字列値をuserName変数に格納するとします。引用されていないため、usernameの値を変数として扱っていました。したがって、たとえば、ユーザー名が「testValue123」の場合はuserName: testValue123userName: 'testValue123'

于 2012-07-06T15:53:53.017 に答える
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文字列の要件を満たすには、文字列を変更する必要がありました

デモ: http: //jsfiddle.net/WTC7k/

ただし、の値userNameが未定義であるというエラーが発生する理由は、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 に答える