通过ajax请求页面内容,但不执行该页面中的javascript代码
当我单击“AjaxButton”通过ajax请求页面“ajax.jsp”时,“html”的值是“ajax.jsp”的代码, 但当我将其附加到div'#ajaxHtml'时,就会丢失警报(“窗口消息”);未执行,单击“methodOne”按钮也未执行通过ajax请求页面内容,但不执行该页面中的javascript代码,javascript,jquery,ajax,mobile,jquery-mobile,Javascript,Jquery,Ajax,Mobile,Jquery Mobile,当我单击“AjaxButton”通过ajax请求页面“ajax.jsp”时,“html”的值是“ajax.jsp”的代码, 但当我将其附加到div'#ajaxHtml'时,就会丢失警报(“窗口消息”);未执行,单击“methodOne”按钮也未执行 $(function(){ alert('jquery init method!'); }); 上面的代码也没有执行 为什么??我该如何解决这个问题,或者是另一种实现同样目标的方法 main.jsp <!DOCTY
$(function(){
alert('jquery init method!');
});
上面的代码也没有执行
为什么??我该如何解决这个问题,或者是另一种实现同样目标的方法
main.jsp
<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Ajax</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="/mobile/mobile/common/script/jQuery/jquery.mobile-1.0a2.css" />
<script type="text/javascript" src="/mobile/mobile/common/script/jQuery/jquery-1.4.4.js"></script>
<script type="text/javascript" src="/mobile/mobile/common/script/jQuery/jquery.mobile-1.0a2.js"></script>
<script>
$(function(){
$('#ajax').click(function(){
ajaxTo();
});
});
function ajaxTo(){
$.ajax({
url: '${ctxPath}/cf/customFormTemplateAction!context.action',//ajax.jsp
type: 'POST',
data: {fileName:'ajax'},
success: function( html ) {
$('#ajaxHtml').append(html);
}
});
}
</script>
</head>
<body style="background-Color:red;">
<div id="zhaosheng" style="border:10px solid lightblue;">
<div id="page" data-role="page" style="border:2px solid blue;" data-theme='d' data-zhaosheng='zhaosheng'>
<div data-role="header" data-position="inline" data-position="fixed">
<h1>Chinese</h1>
</div>
<div data-role="content">
<a id="ajax" data-role="button" rel="external">AjaxButton</a>
<div id="ajaxHtml"></div>
</div>
<div data-role="footer" data-position="fixed">
<h1>DCL[zhaosheng.wolf@163.com]</h1>
</div>
</div>
</div>
</body>
</html>
ajax.jsp
<!DOCTYPE html>
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>China</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="/mobile/mobile/common/script/jQuery/jquery.mobile-1.0a2.css" />
<script type="text/javascript" src="/mobile/mobile/common/script/jQuery/jquery-1.4.4.js"></script>
<script type="text/javascript" src="/mobile/mobile/common/script/jQuery/jquery.mobile-1.0a2.js"></script>
<script defer="defer">
function methodOne(){
alert('This is a test message!');
}
$(function(){
alert('jquery init method!');
});
alert('window msg');
</script>
</head>
<body >
CONTENT<br/>
<a href='javascript:methodOne();'>methodOne</a>
</body>
</html>
main.jsp
AJAX
$(函数(){
$('#ajax')。单击(函数(){
ajaxTo();
});
});
函数ajaxTo(){
$.ajax({
url:“${ctxPath}/cf/customFormTemplateAction!context.action”,//ajax.jsp
键入:“POST”,
数据:{fileName:'ajax'},
成功:函数(html){
$('#ajaxHtml').append(html);
}
});
}
中国人
您不能将HTML页面插入div
。改用iframe
。我也有同样的问题。解决这个问题的唯一方法就像Aaron回答的那样:使用iframe来接收html页面。但是记住这一点:来自iframe的代码不能超出iframe。
换句话说,iframe中的脚本无法对插入iframe的页面执行任何操作,但页面上的脚本可以访问iframe中的所有内容。jquery mobile加载您通过AJAX请求简单链接到的所有内容。只需链接到页面,它就可以正常工作。只是不要使用
rel=external
(不必要的)。如果您需要使用POST,它也可以用于表单。尽管如此,如果你想自己做这件事——遵循方法学
您不应该将整个html内容加载到一个div中,它真的很混乱。如果使用ajax,您只对加载页面的主体感兴趣。即使你把整个html文档放进去——你在那里创建的jquery代码不会运行,因为DOMready事件不会触发——网站没有作为文档加载,而是你把整个东西放进了现有的DOM中。代码将不起作用
要使其正常工作,请在正文中的
块中定义函数,并在将位加载到页面后调用该函数
要使jquery与您注入DOM的新内容一起工作,请参阅中的相关问题,它是jquery mobile。这一切都是用ajax完成的。在这里使用iframe不是一个好主意。在这种情况下,答案是不正确的。AJAX不允许您改变HTML的规则。构造
…
无效,无法按预期方式工作。如果他将
部分移动到
中,并尝试在主体
标记之间插入元素,这可能会起作用。