eval は悪であるため、これは eval よりもわずかに優れています ;)
(new Function(response.data))()
eval
多くのセキュリティホールが存在する可能性があるため、使用は悪です。グローバル スコープでコードを実行しています。Function
独自のスコープで実行することにより、これを別の方法で実行します。
new Function
も高速です
あなたの場合
$.ajax({
url: '@Url.Action("GetPropertyDataForInstance", "Local_Data")',
type: 'POST',
dataType: 'json',
data: instancePropertyRequest,
contentType: 'application/json; charset=utf-8',
success: function (response) {
(new Function(response.data))()
}
})
new Function
生のテキストから新しい関数を作成します。
()()
関数をすぐに実行する
関数を ajax で取得する場合は、追加のチェックとヘッダーも追加します。これをチェックして。
https://stackoverflow.com/a/17468822/2450730
編集
ajaxからパラメータを渡したい場合
//raw ajax response
var x='param';
alert(x)
ajaxの内部からパラメータを渡したい場合(良くありません。)
success: function (response) {
var x='param';
(new Function(response.data))(x)
}
生
alert(x);
編集 2
1.スクリプト 2.パラメータでオブジェクトを取得した場合
次に、引数名を定義する必要があります。この場合は「x」です。
js
(new Function('x',response.script))(response.param)
RAW response.script
alert(x)
その他の引数:
(new Function('a','b','c','alert(a+b+c)'))(1,2,3) // 123
TEST IT ... http://jsfiddle.net/pLQzd/
READ IT ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
一番下までスクロールします。
しかし、関数と変数を含むオブジェクトを取得すると...同じajax呼び出しから
すでに説明したものを作成するだけです。
生
var param='hello';
alert(param);
またはさらに単純な
alert('hello');