2014-10-20 82 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