2010-10-29 22 views
-1

我想从Jquery-ajax调用一个jsp文件。 但是,我能够只获得纯html。它加载html时不加载任何css文件和js文件。所以HTML页面出来了样式表。如何调用js文件而不是加载html的情况下调用的AJAX

这里,示例代码更新

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<html> 
<head> 
<title>Welcome</title> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
</head> 
<script type="text/javascript" src="js/Global/jquery-1.4.2.js"></script> 
<script type="text/javascript"> 
    function ajaxJq() 
    { 
    $.get('test.jsp', function(data) 
     { 
      $('#myDiv').html(data); 
      alert('Load was performed.'); 
     }); 
    } 
</script> 
<body> 
    <div id="myDiv"></div> 
    <div id="error"></div> 
    <button id ="buttonAjax" type="button" onclick="ajaxJq()">Ajax Call</button> 
</body> 
</html> 

test.jsp的包含js文件和css文件。如果我看到,test.jsp加载f

回答

0

您需要手动完成工作。

function ajaxJq() { 
    $.get('test.jsp', function(data) { 
     var $html = $(data); 

     $html.find('script').each(function(i,e){ 
      $('head').append(e); 
     }); 
     $html.find('link').each(function(i,e){ 
      $('head').append(e); 
     }); 

     $('#myDiv').html($html.find('body').contents()); 

     alert('Load was performed.'); 
    }); 
} 

但是总的来说,这可能不是一个好办法。使用iframe可能在这里效率更高,因为您无法将另一个<html><head>标签加载到另一个页面/ DOM中。

3

当您使用AJAX加载内容时,返回的内容应该只是一个HTML片段。

如果加载完整的HTML文档并将其放入页面,则生成的HTML代码无效,因为文档不能位于其他文档中。不同的浏览器在无效代码上的表现稍有不同,但是没有浏览器会加载css文件并仅将其应用于加载的内容。

如果你想加载一个完整的HTML文档,那么你应该使用iframe而不是使用AJAX加载内容。

1

这是预期的行为。当您尝试将整个HTML页面加载到现有的页面元素(如DIV)时,大多数浏览器将删除脚本,样式表和任何其他元内容(如标题)。对于造型可能的解决方法是:

  • 包括
  • 使用内嵌样式在检索到的页面
在您的主页上其他CSS文件
相关问题