我有页面,我正在对PageMethod
进行ajax调用,结果我得到一些html字符串,我需要附加到某个div。现在Html字符串中有一些javascript代码,所以我希望在将html附加到div之后执行这个js代码。但问题是,我收到错误说 - Microsoft JScript runtime error: Access is denied.
,当globalEval方法尝试执行时会抛出此错误。
这是我做的ajax电话
var data ={id: id};
$.ajax({
type: "POST",
url: "/srv/Loader.aspx/LoadUserControl",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
dataType: "json",
success: function (data) {
$('#TargetDivID').html(data.d);
},
error: function (error) {
$('#TargetDivID')..html("Control can not be loaded");
console.log("LOG: Exeption trying to load Control:\n" + error.responseText);
}
});
这是WebMethod返回的Html:
<div class="someclass" id="inHouseAdModule" style="display:none;">
Some Html Content
<script type="text/javascript">
$(document).ready(function () {
Some logic goes here
});
</script>
</div>
任何想法我该如何解决这个问题?
修改
<div class="someclass" id="inHouseAdModule" style="display:none;">
Some Html Content
<script type="text/javascript">
Some logic goes here
</script>
</div>
不起作用。
修改 我在JS代码的开头添加了调试器,但是在达到这一点之前抛出了异常。
<script type="text/javascript">
debugger;
Some logic goes here
</script>
答案 0 :(得分:0)
在搜索到您的错误后,普遍的共识是您的请求中可能包含错误的网址。如果Web方法接受GET,请尝试在浏览器中点击URL以确保正确。此外,您可以使用浏览器的开发者工具检查网络流量,以确保您的请求和响应具有预期的标头。
=============================================== =============
此外
该文件可能已准备就绪。将您的HTML更改为以下内容以立即执行JavaScript。
<script type="text/javascript"> /*Some logic goes here*/ </script>
如果以后需要再次调用它,请保留函数包装器并在声明后立即调用该函数。
<script type="text/javascript"> function MyFunc() { Some logic goes here } MyFunc(); </script>
=============================================== =============
另类方法
我建议使用指向返回动态包装内容的URL的HTML IFRAME,而不是通过AJAX加载动态创建的内容并尝试将其注入页面。这是广告内容的常用方法。