2014-09-12 70 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