1

私のWebアプリ(jQueryを実行している)は、サーバーから次のJSON応答を取得します。

{
    "script_0": "$('#objview_0_306').on('click', function(e){ getObjectResponse(96089, '306', 'display'); e.preventDefault();});",    
    "verb_0": "display",
    "obid_0": "0_306",
    "body_0": "<div id=\"objview_0_306\"></div>",
    "icon_0": "icons/caseman16.png",
    "close_0": "previousTab();",
    "title_0": "Cases",
    "cmdCount": "1"
}

script_0要素には、実行する必要のあるスクリプトが含まれています。この場合、DOM要素にonClickイベントを追加します。

現時点では、スクリプトは文字列として返されるため、eval()を使用してスクリプトを実行します。eval()の使用を回避する方法はありますか?

4

4 に答える 4

1

ヌープ。eval(およびエイリアスFunctionコンストラクターなど)は、これを正確に実行し、文字列を実行可能なjavascriptに解析するように設計されています。

を使用したくない場合はeval、サーバーから完全なJavaScriptを返す代わりに、クライアントアプリに事前定義されたタスクを実行するように指示するjson応答の値を返すことができます。

@Esailijaによるコメントを盗用します。一体なぜjsonにコードがあるのでしょうか。それはデータ交換フォーマットです...

于 2012-08-01T10:47:01.590 に答える
0

eval私はあなたがその派生物の1つなしであなたが望むものを達成することができるとは思いません。

jQuery.globalEval()ここで説明されているように、メソッドを確認できます:http: //api.jquery.com/jQuery.globalEval/

jQuery.getScript()また、メソッドを確認することもできます:http: //api.jquery.com/jQuery.getScript/

于 2012-08-01T10:46:05.543 に答える
0

私が最初に通常のeval == evilマントラを吐き出しますが、現実主義者でもあり、ルールが破られることがあります。

私はあなたがそれらの1つをここに持っているかもしれないと言うでしょう。

于 2012-08-01T10:46:27.093 に答える
0

その文字列とコードをDOMに追加してから、必要な要素でクリックイベントをトリガーすることができます。

于 2012-08-01T10:47:07.370 に答える