我有这个示例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