0

我正在尝试.aspx像这样使用 jquery 加载页面;

        $('ul#menu li ul.collapse').on('click', 'li a', function (e) {
            e.preventDefault();
            var div = $('#content .container-fluid .row-fluid .span12');

            var url = $(this).attr('href');
            setTimeout(function () {
                var htmlPage = div.load(url + ' #MainContentHolder',
                    function () {
                         //other stuff
                    });
            }, 1000);

        });

但是,我的.aspx页面确实嵌入了这样的 javascript;

<div id="MainContentHolder">
    <h1>Test Aspx Content</h1>
    <div>
        <script type="text/javascript">
            alert("hello");
        </script>
    </div>
</div

当我看到结果HTML时,我可以看到它已加载(使用萤火虫)。但它没有显示 我也阅读了所有其他问题的alert()消息,但这对我没有帮助;
stackoverflow

更新:

正如 asnwer 中所建议的,以下代码仅适用于第一次。我试图关闭cache:false并尝试从GETPOST;

 $.ajax({
         url:url,
         success:function(data){
         div.html(data);
    }
}); 
4

2 回答 2

1
$('ul#menu li ul.collapse').on('click', 'li a', function (e) {
            e.preventDefault();
            var div = $('#content .container-fluid .row-fluid .span12');

            var url = $(this).attr('href');
            setTimeout(function () {
                $.ajax({
                        url:url,
                        success:function(data){
                                    div.html(data);
                                    //other stuff
                                }
                        });  

            }, 1000);

        });
于 2013-06-21T08:47:34.967 回答
1

var htmlPage = div.load(url + '#MainContentHolder', function () { //other stuff });

根据 .load() 的文档

但是,如果调用 .load() 时将选择器表达式附加到 URL,则脚本会在 DOM 更新之前被剥离,因此不会执行。

相反,您可能希望将脚本放入 js 文件并使用$.getScript(),它将使用 GET HTTP 请求从服务器加载 JavaScript 文件,然后执行它。

编辑:

另一种方法是在您的页面中仅包含脚本并加载该页面,如下面的链接所示

jQuery .load() 调用不会在加载的 html 文件中执行 javascript

或者

正如已经建议使用 $.ajax() 并在成功回调函数中,您需要显式执行您的 JS 代码,如本文所示。使用评估。

或者

您可以使用 .load 加载动态页面,并在成功回调函数中使用 $.getScript ,如前所述。

我希望它有帮助!

于 2013-06-21T08:46:37.883 回答