如何执行PageMethod返回的javascript

How to execute javascript returned from PageMethod

本文关键字:PageMethod 返回 javascript 执行 何执行      更新时间:2023-09-26

我有一个页面,在那里我对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>

搜索错误后,普遍认为您的请求中可能有一个不正确的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的HTMLIFRAME。这是广告内容的常见方法。