2010-10-29 32 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文件
相關問題