2013-06-27 42 views
3

我有一個腳本,使ajax請求傳遞3個不同的數據:eventName/ticketsToWin/totalWinners。不能發送'+'字符超過AJAX

我的整個過程都很完美,直到遇到這種情況:「SCi + Tec」作爲eventName變量。這裏只是在發送前是什麼樣子的請求的數據:

名=科學+ Tec的& ticketsToWin = 1個& totalWinners = 2

但隨後,在PHP端,如果我轉儲_GET數組,我有這樣的:

array(4) { 
    ["name"]=> string(7) "Sci Tec" 
    ["ticketsToWin"]=> string(1) "1" 
    ["totalWinners"]=> string(1) "2" 
    ["_"]=> string(13) "1372359516001" 

}

的「+」字符缺少的名字,它打破自帶之後的一切。任何想法爲什麼?!

Thans!

回答

2

編碼的字符串:

名=科學%2BTec & ticketsToWin = 1個& totalWinners = 2

或更容易:

var str = 'name=Sci+Tec&ticketsToWin=1&totalWinners=2'; 
var encoded = encodeURIComponent(str); 

看到docs或本Question

+0

你來了!謝謝 – Rommy

0

我敢肯定,在URL中的加號來代替一個空間,像谷歌搜索,你給下面的查詢:

「如何發送電子郵件」,

它將顯示在URL中:

「How + to + send + an + email」。

嘗試發佈它。

0

在Urls中,查詢字符串中的空格會自動替換爲加號。所以當服務器獲得Sci + Tec時,它認爲應該有一個空間。您需要使用url編碼轉義它:%2B。

更多關於URL編碼:http://www.w3schools.com/tags/ref_urlencode.asp

0

,你既可以使用Java的URL編碼或一個JavaScript編碼器

URLEncoder.encode(yourString) 
相關問題