如何执行从PageMethod返回的javascript

时间:2012-08-21 13:16:23

标签: javascript jquery eval pagemethods

我有页面,我正在对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>

1 个答案:

答案 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加载动态创建的内容并尝试将其注入页面。这是广告内容的常用方法。