2014-09-12 84 views
0

我有一個Web應用程序,它由服務器端的ASP.NET和客戶端的Javascript/jQuery提供支持。我想知道是否可以對ASP.NET WebMethod進行Ajax調用並執行返回的JavaScript代碼。例如(非常簡化的例子):從ajax調用執行動態javascript

我的HTML:

<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <div id="divMessage"></div> 
    </body> 
</html> 

在我的C#:

[WebMethod] 
public static string GetScriptCode() 
{ 
    return "$('#divMessage').html('This is a test');"; 
} 

在我的javascript:

$(function() { 
    var handler = function(msg) { 
     var myScriptCode = msg.d; 
     // I'd like $('#divMessage') to contain my message 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "Test.aspx/GetScriptCode", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: handler 
    }); 
}); 

我想的JavaScript這是從我的GetScriptCode()返回執行。任何想法如何做到這一點?

回答

0

使用eval()是一種選擇,但正如每個人所說的eval是邪惡的,不要使用它。

我通常做一個動態函數,像這樣的:

var theCode = "$('#divMessage').html('This is a test');"; 

var F=new function (theCode); 

return(F()); 

排序看起來像重塑的EVAL,但是這就是我如何做到這一點到現在爲止。

+0

出於好奇,爲什麼'eval'邪惡?這是安全風險還是什麼? – Icemanind 2014-09-12 23:26:22

+0

您永遠無法使用'eval'驗證您正在執行的代碼,這可能是任何惡意/危險有害的代碼,否則您將永遠無法在您的應用上運行該代碼。 – nilobarp 2014-09-12 23:28:14