2012-08-12 55 views
1

为什么当html标记被添加到json时,如果<br />不存在,那么这个ajax失败,那么是有效的。我能想到的唯一工作就是编码文本。当字符串包含HTML标记时,JSON无法解析

你知道为什么或/和有任何其他的建议。

感谢

$.ajax({ 
      type: "POST", 
      url: "/url", 
      //data: { "myText" : '[{ "a": "test1", "b": "test2"}]' },//works 
      data: { "myText": '[{ "a": "<br />dfgdfgdfgdfgdgd", "b": "test2"}]' },//causes error 
      dataType: 'json', 
      success: function (data) { 
         alert("pass"); 
      }, 
      error: function() { 
         alert("error"); 

      } 
     }); 
+1

你发布什么服务器端技术?大多数不会允许您发布可能有害的字符,如< /> – Paul 2012-08-12 15:30:40

+0

您好我正在使用asp.net作为服务器 – 2012-08-12 15:36:15

+0

技术上
是HTML标记和
是XHTML。可能你的解析器是非常严格的? – 2012-08-12 15:37:26

回答

3

尝试使用JSON.stringify方法:

data: { "myText": JSON.stringify([{ "a": "<br />dfgdfgdfgdfgdgd", "b": "test2"}]) } 

,或者如果你不想送myText作为JSON字符串中删除单引号:

data: { "myText": [{ "a": "<br />dfgdfgdfgdfgdgd", "b": "test2"}] } 

当然,如果在服务器端使用某种技术(例如, ch as ASP.NET),它禁止在请求中使用<>等字符,您将不得不修复您的服务器端脚本,以便它接受这些字符。

+1

这是修复。大多数服务器不会允许'<...>'作为安全防范措施,它们必须被转义。 – jbabey 2012-08-12 15:32:16

+0

JSON.stringify不起作用,但我试过html编码它,那工作 - 是否可以,如果它的作品? – 2012-08-12 15:34:45

+0

删除单引号也无效 – 2012-08-12 15:37:44

相关问题