通过ajax请求页面内容,但不执行该页面中的javascript代码

通过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

当我单击“AjaxButton”通过ajax请求页面“ajax.jsp”时,“html”的值是“ajax.jsp”的代码, 但当我将其附加到div'#ajaxHtml'时,就会丢失警报(“窗口消息”);未执行,单击“methodOne”按钮也未执行

 $(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的规则。构造
无效,无法按预期方式工作。如果他将
部分移动到
中,并尝试在
主体
标记之间插入元素,这可能会起作用。