我有這個示例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) {
}
});
您能更詳細地描述一下您在服務器端做什麼嗎?雖然對於JSON.strinify裸HTML(而不是一些JS對象/數據)有點不正統,但我的測試顯示JSON.stringify幾乎沒有改變HTML的返回。數據將在enroute編碼。但是在返回結果之前瞭解代碼方面發生了什麼更重要。 – 2014-10-21 01:16:41
我應該如何通過裸體的HTML到服務器端?只需要對它進行url編碼並傳遞它,而不使用JSON? (我真的在問)。那麼服務器端代碼,解碼url編碼,替換一些變量,然後將其作爲json再次發回。 – Drakoumel 2014-10-21 06:43:39
爲什麼不使用Ajax來獲取要注入服務器的變量並修改客戶端上的HTML?服務器是否需要在知道需要進行哪些更改之前處理原始HTML?如果是這樣,您可以向服務器提供它在JSON對象而不是HTML中所需的信息。從Ajax調用中刪除標記不僅是高性能的,它還允許您更輕鬆地進行調試,因爲它更易於閱讀。 – 2014-10-21 15:03:44