2010-08-18 152 views
0

只是一個簡單的問題。我想從Javascript發送數據到一個PHP腳本以將其存儲在我的數據庫中,然後以相同的方式恢復它(腳本調用PHP函數,並使用JSON發回數據)。轉義特殊字符

我應該在JavaScript中使用哪個函數?我不應該只需要使用PHP獲取數據,那麼可以使用escape(string);然後unescape(encoded_string);來顯示?

謝謝。從法國
問候)

編輯:忘記提到:數據是從用戶輸入的字符串(因此安全問題)

回答

2

使用encodeURIComponent()用於在URL傳輸。

function sendData(str) 
{ 
    var url = "http://myserver.com/upload?data="+encodeURIComponent(str); 
    ajax(url); 
} 

當數據被髮送到服務器,服務器應該自動unencode這是在URL中發送的,所以你不需要做手工的數據。 (我對PHP不太熟悉,不過,如果我錯了,有人會糾正我。)您也不需要編碼發送給客戶端的數據,因爲它不是通過URL發送的。

謹慎的只是一個字:

如果escape()數據,然後unescape()它以後,所有的HTML標記,javascript和用戶輸入的其他事情會因爲他們是被精確地恢復。所以一定要在顯示數據之前刪除這些東西。

參見:http://xkr.us/articles/javascript/encode-compare/

+0

的事情是,我使用jQuery的$ .getJSON()函數發送數據,給他地圖的pramaeters,包括消息的正文。所以'encodeURIComponent()'是不夠的,因爲沒有對引號做任何事情,只對特殊字符,如é,è,à,$,#,!,?, ... – 3rgo 2010-08-18 15:15:12

+0

@ Squ36'encodeURIComponent()'除了〜!*()'之外的所有內容都被編碼,但是JSON通常使用雙引號(「),所以這不應該是一個問題,而且我認爲這些字符在URL中沒有特別的含義。你不需要替換它們。 – Na7coldwater 2010-08-18 15:43:18