2014-10-20 83 views
0

我有這個示例HTML,需要通過ajax傳遞到服務器端函數,替換一些變量,然後傳回到顯示爲HTML。通過ajax傳遞HTML並返回以顯示它

但它被編碼,和html消毒很多次,我感到困惑!

在HTML以這種形式被傳遞:

"<style type="text/css">* {↵ margin-top: 0px;↵ …↵  etc 
在後端

看來是這樣的:(RAW-明顯URL編碼)

%22%3Cstyle+type%3D%5C%22text%2Fcss%5C%22%3E*+%7B%5Cn++++margin-top%3A+0px%3B%5Cn++++margin- 

然後其urlDecoded:

"<style type=\"text/css\">* {\n margin-top: 0px;\n margin-bottom: 0px;\n padding: 0px;\n border: none;\n line-height: normal;\n outline: none;\n 

然後它發送回ajax並從ajax接收這樣的:

"'"<style type=\\"text/css\\">* {\\n margin-top: 0px;\\n margin-bottom: 0px;\\n padding: 0px;\\n border: none;\\n line-height: normal;\\n outline: none;\\n list- 

我該怎麼做,以便我可以將Ajax接收到的字符串顯示爲HTML中的正常HTML格式?爲什麼這麼多\ n和\ t?即使當我解析HTML時,它也只是用HTML特殊字符替換它們,但仍然沒有被瀏覽器渲染。

阿賈克斯:

 $.ajax({ 
     type: "POST", 
     async: false, 
     url: "url", 
     data: {htmlTemplate: JSON.stringify(data.html)}, 
     success: function (Data) { 
      ajaxOutput = Data; 
     }, 
     error: function (err) { 

     } 
    }); 
+0

您能更詳細地描述一下您在服務器端做什麼嗎?雖然對於JSON.strinify裸HTML(而不是一些JS對象/數據)有點不正統,但我的測試顯示JSON.stringify幾乎沒有改變HTML的返回。數據將在enroute編碼。但是在返回結果之前瞭解代碼方面發生了什麼更重要。 – 2014-10-21 01:16:41

+0

我應該如何通過裸體的HTML到服務器端?只需要對它進行url編碼並傳遞它,而不使用JSON? (我真的在問)。那麼服務器端代碼,解碼url編碼,替換一些變量,然後將其作爲json再次發回。 – Drakoumel 2014-10-21 06:43:39

+0

爲什麼不使用Ajax來獲取要注入服務器的變量並修改客戶端上的HTML?服務器是否需要在知道需要進行哪些更改之前處理原始HTML?如果是這樣,您可以向服務器提供它在JSON對象而不是HTML中所需的信息。從Ajax調用中刪除標記不僅是高性能的,它還允許您更輕鬆地進行調試,因爲它更易於閱讀。 – 2014-10-21 15:03:44

回答

0

爲什麼不使用Ajax來獲取你的服務器上注入的變量和修改客戶機上的HTML?服務器是否需要在知道需要進行哪些更改之前處理原始HTML?如果是這樣,您可以向服務器提供它在JSON對象而不是HTML中所需的信息。從Ajax調用中刪除標記不僅是高性能的,它還允許您更輕鬆地進行調試,因爲它更易於閱讀。

+0

前端不知道哪些變量需要更改,並且變量不應該在前端顯示。問題在於json,可能是HTML字符串的編碼。根據評論,我將該字符串純粹作爲HTML傳遞 – Drakoumel 2014-10-22 09:10:16