2011-11-30 49 views
1

我通过jQuery的ajax请求发送一些测试。 该文本包含一些特殊字符,如“& lt”,“& gt”,“& amp”,其代表<,>和&。通过AJAX发送特殊字符(“&lt”,“&”,“&amp;”)

$.ajax({ 
type: "POST", 
url: "page.php", 
data: "content="+txt }); 

不幸的是,字符串传输不好。只传送开头,并在第一个特殊字符处切断。

举例来说,如果我发送 “blablabla & ltgrogrogro”,服务器只接收 “blablabla”

我怎样才能解决呢?

PS:特殊字符实际上以“;”结尾,我没有这样做,因为否则它们显示不好。

回答

2

&代表你的数据查询另一个变量串。所以,你应该使用JavaScript对象,像这样把它:

$.ajax({ 
    type: "POST", 
    url: "page.php", 
    data: { 
     "content": txt 
    } 
}); 
+1

这是一个JavaScript对象,[不是JSON对象](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 – Quentin

+0

它仍会将您的数据发布到您的page.php。所以你可以用$ _POST访问它。并感谢@Quentin。 – jValdron

2

这是设计:如果你传递一个字符串到data,它将被视为表单URL编码数据(如查询字符串)。在这种格式下,&表示新参数的开始。数据中的&符号需要进行URL编码。

你会需要或者进行urlencode您的数据传输之前 - 在PHP中,右功能将urlencode() - 或通过一个数组,jQuery将自动编码:

data: {"content": txt } 
+1

从技术上讲,它是应用程序/ x-WWW的形式了urlencoded的数据,这是在查询字符串编码数据的标准方法,它如果正在进行GET请求,则会被JSON视为查询字符串。 – Quentin

+0

@Quentin真的,看到数据将被张贴。谢谢 –