簡體   English   中英

從字符串執行JavaScript代碼

[英]Execute JavaScript code from a string

我在服務器端創建了一個javascript代碼,並通過rest請求將其作為字符串傳遞給客戶端。 我正在嘗試執行檢索到的代碼。 任何幫助,將不勝感激。

服務器端。 javascript代碼存儲在字符串中。

(function() {

function createChart(selector) {
    $(selector).highcharts({
        chart: {
            type: 'column',
        },
        xAxis: {
            crosshair: true,
            type: "category"
        },
        yAxis: {
            min: 0,
            title: {
                text: null
            }
        },
        series: [{

            data: datas    
        }],
    });
}

function render() {
    createChart('#chart');
}
return {
    render: render
}
}())

客戶端(角度js)

    .controller('ChartController', ['$scope', 'charts',function ($scope, charts) {

        var test = charts.data;//contains the javascript code send by a rest request
        eval(test); 
        test.render(); 

}])

在客戶端執行腳本會在Chrome中返回“ test.render不是函數”

有什么建議嗎?

非常感謝你

您可以使用eval執行任意一段Javascript代碼,但應盡可能避免這種情況。

eval是一個巨大的安全問題,因為大概是您從外部來源獲得了該字符串,並且誰知道他們可能嘗試運行什么。 有關為什么eval為邪惡的更多信息, 請參見此問題

采用:

var result = eval(test); 
result.render(); 

因為您的test是字符串。 eval(test)result是一個函數。

始終不建議使用eval 但是,如果您確實需要它,請改用angular $eval

如果您想自己eval()Angular表達式,請使用$ eval()方法。

您應該像這樣使用eval函數:

var functionToEval = "functionName";
console.log(eval(functionToEval));

有關eval函數的更多信息,請訪問以下頁面: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM