我正在尝试使用像这样的jquery加载.aspx
页面;
$('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
时,我可以看到它被加载(使用firebug)。但它没有显示alert()
消息
我还在stackoverflow
上阅读了所有其他问题,但这对我没有帮助;
cache:false
并尝试从GET
到POST
;
$.ajax({
url:url,
success:function(data){
div.html(data);
}
});
答案 0 :(得分:1)
var htmlPage = div.load(url +'#MainContentHolder', function(){ //其他的东西 });
根据.load()的documentation,
如果使用附加到URL的选择器表达式调用.load(), 但是,在更新DOM之前,脚本会被删除, 因而没有被执行。
相反,您可能希望将您的脚本放在js文件中并使用$.getScript(),它将使用GET HTTP请求从服务器加载JavaScript文件,然后执行它。
修改强>
替代方法是在您的页面中只有脚本并加载该页面,如下面的链接
所示jQuery .load() call doesn't execute javascript in loaded html file
OR
如前所述,使用$ .ajax()并成功回调函数,您需要显式执行您的JS代码,如this post所示。使用eval。
OR
您可以使用.load加载动态页面,并且成功回调函数使用前面已经建议的$ .getScript。
我希望它有所帮助!
答案 1 :(得分: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);
});