2012-08-12 117 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