从ajax调用执行动态javascript
问题描述:
我有一个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()
返回执行。任何想法如何做到这一点?
答
使用eval()是一种选择,但正如每个人所说的eval是邪恶的,不要使用它。
我通常做一个动态函数,像这样的:
var theCode = "$('#divMessage').html('This is a test');";
var F=new function (theCode);
return(F());
排序看起来像重塑的EVAL,但是这就是我如何做到这一点到现在为止。
出于好奇,为什么'eval'邪恶?这是安全风险还是什么? – Icemanind 2014-09-12 23:26:22
您永远无法使用'eval'验证您正在执行的代码,这可能是任何恶意/危险有害的代码,否则您将永远无法在您的应用上运行该代码。 – nilobarp 2014-09-12 23:28:14