2011-11-30 104 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真的,看到數據將被張貼。謝謝 –