2010-08-12 55 views
1

歡迎,如何發送「+」號(加,正)

我正在使用jquery發送表單,通過POST。

這就是我如何獲得價值。

var mytext = $("#textareaid").val(); 
var dataString = 'text='+ mytext; 

問題是,我失去了某處 '+' 號...... PHP不明白這一點。 但是,當我打印mytext,我可以看到+符號。

我認爲這是特殊的字符,它被jquery刪除。

有沒有人有更好的主意,然後用「hereshouldbepositivesign」在javascript「+」中補充並在php中「rereshace」hereshouldbepositivesign「to」+「? 問候

+0

對不起,我不明白你的問題。你提到一個POST請求,然後提供一些客戶端的JQuery/Javascript。你失去了什麼加號,你能提供更多的信息和完整的例子嗎? – Lazarus 2010-08-12 13:35:00

+0

您是否找到解決此問題的方法? – 2014-07-15 16:04:25

回答

6

你必須正確編碼參數名稱和值:

var dataString = 'text=' + encodeURIComponent(mytext); 

我沒有理會編碼「文本」,因爲這顯然是安全的。

如果你的值在表單中,你可以讓jQuery爲你做。你不張貼你如何做POST,但如果它與一個jQuery AJAX API可以設置「數據」,以一個普通的對象:

{ text: mytext } 

,它會知道編碼它。

+0

encodeURIComponent,解決我的問題。 這是我如何發送。 $ .ajax({type:「POST」, url:「test.php」, data:dataString, cache:false, success:function(html){} – marc 2010-08-12 13:41:09

0

至少在GET請求中,空格被轉換爲加號(因爲URL不能有空格),並且框架通常會在將數據提供給您進行處理之前將其轉換回來。

這意味着你必須做一些其他的加號,讓他們加上標誌。普通的URL編碼會使他們%2B

0

我有同樣的問題,想通了,我在PHP中的數據做了一個urlDecode,即使PHP已經自己做了。

  • jQuery可能會自動爲您編碼URI組件數據,如果您給它0​​data:{} as object。
  • PHP自動urldecode所有$ _POST $ _GET 的內容。

GOOD: 1 + 1 => js的encodeURIComponent方法( 「1 + 1」)=> 1%2B1 => PHP自動urldecode => 1 + 1

如果你做一件urldecode在這一點上,它會將+轉換爲空間,這是你不想要的。

BAD: 1 + 1 => js的encodeURIComponent方法( 「1 + 1」)=> 1%2B1 => PHP自動urldecode => 1 + 1 => PHP urldecode( 「1 + 1」)= > 1 1