0

我有一个页面,我在其中进行 ajax 调用PageMethod,结果我得到了一些 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>
4

1 回答 1

0

搜索您的错误后,普遍的共识是您的请求中的 URL 可能不正确。如果 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>

==================================================== ==========

另一种方法

我建议不要通过 AJAX 加载动态创建的内容并尝试将其注入您的页面,而是使用指向返回动态创建内容的 URL 的 HTML IFRAME。这是广告内容的常用方法。

于 2012-08-21T13:24:02.333 回答