2013-07-10 128 views
0

我從$ .ajax從服務器獲取內容。而這些內容的HTML字符串,他們有自己的風格歐文,以下是我的代碼:

<script src="jquery-1.7.1.js" type="text/javascript"></script> 
<link href="Default.css" rel="stylesheet" /> 
<link href="all.css" rel="stylesheet" /> 
<script type="text/javascript"> 
    var dataStr = "indexOfStart=" + 0; 
    $(document).ready(function() { 

     $("#idgetData").click(function() { 
      $.ajax({ 
       type: "post", 
       url: "http://localhost:1897/Content/Services/Service1.asmx/GetArticlesDuring", 
       dataType: "jsonp", 
       data: { indexOfStart: 0, indexOfEnd: 20 }, 
       jsonp: 'back', 
       success: function (result) { 
        var res = decodeURIComponent(result.Result); 
        document.getElementById("content").innerHTML = res; 

       }, 
       error: function (XMLHttpRequest, textStatus, errorThrown) { 
        targetDiv = $("#data"); 
        if (errorThrown || textStatus == "error" || textStatus == "parsererror" || textStatus == "notmodified") { 
         targetDiv.replaceWith("請求數據時發生錯誤!"); 
         return; 
        } 
        if (textStatus == "timeout") { 
         targetDiv.replaceWith("請求數據超時!"); 
         return; 
        } 
       }, 
       complete: function() { 
        //addStyle("Default.css"); 
        //addStyle("all.css"); 
        document.write('<link href="Default.css" rel="stylesheet" /><link href="all.css" rel="stylesheet" />'); 
       } 
      }); 
     }); 
    }); 
function addStyle(stylePath) { 
     var container = document.getElementsByTagName("head")[0]; 
     var addStyle = document.createElement("link"); 
     addStyle.rel = "stylesheet"; 
     addStyle.type = "text/css"; 
     addStyle.href = stylePath; 
     container.appendChild(addStyle); 
    } 

問題是內容的風格不能被加載和工作, 誰能幫助我嗎?

回答

2

您不應該在請求完成後加載樣式,因爲一旦加載了CSS,它也會爲新元素應用樣式。但是如果你願意,你可以將css樣式表追加到complete事件處理程序的頭部。

+0

是的,你是對的。我發現問題出在html中的內容字符串中,在樣式類名稱之前,有「+」(加號)。這是因爲在發送內容的C#代碼中,我使用了「Server.UrlEncode(string) 「,這會造成」+「問題。我找到解決方案:在C#代碼中,我使用「Microsoft.JScript.GlobalObject.encodeURIComponent(string)」來編碼html內容,在客戶端js代碼中,我使用「decodeURIComponent」來解碼。如此完美的方式,現在可以。並且非常感謝你! – francis

+0

我很高興我能夠幫助,這是沒有問題的 – BrotherBallan

0

在您的代碼中,您只需再次加載已有的樣式。如果新的HTML內容具有新的CSS樣式(即它們既不在Default.css中,也不在all.css中),則需要將它們放入新的樣式表或新的內聯<style>元素中,並將其添加到文檔中。

+0

謝謝你,我找到了解決方案,我找到了一些有趣的事情,你可以通過看到第一個答案的評論得到它! – francis