關於使用jQuery 的ajax 函式庫一定要注意的事情

今天又遇到一個讓我卡了一陣子的情況...
簡單來說我用$.ajax 傳了一個字串
但我希望這個字串代表的是一連串的標籤
像是:  data1, data2, data3...

所以我用";" 來區隔這些標籤
在前台傳單一字串, 到後台再來切這樣
結果遇到了一個問題, 不論怎麼試
後台收到的東西似乎就還是encodeURI 過後的
我記得GAE 收參數時應該會自行去decodeURI 才是

結果後來恍然大悟, 其實這個問題之前也碰到過
就是$.ajax 會很好心的替我們自動encodeURIComponent
所以所有傳出的參數其實都已經做過了
我們自己若還是做的話等於就多做了一次
GAE 自動decodeURI 等於只解了一層
難怪GAE 收到的看起來還是encodeURI 過的...

可怕的是這個現象很難偵測
用Chrome 或是firebug 去看送出參數都看不出異狀(都是只encodeURI 一次的字串, 而非兩次)
這也告訴我們, 其實開發者工具還是不能盡信


Note: 為了簡便起見, 以上所提及的 encode 或 encodeURI 其實都是 encodeURIComponent

留言

熱門文章