JQ和PHP是現(xiàn)今網(wǎng)絡(luò)技術(shù)中使用最為廣泛的兩種編程語言。其在前端開發(fā)和后端開發(fā)中都擁有著不可替代的地位。而在網(wǎng)絡(luò)數(shù)據(jù)交互中,數(shù)據(jù)的轉(zhuǎn)碼問題也是必須考慮的一個重要環(huán)節(jié)。今天,我們就來談一談JQ和PHP在轉(zhuǎn)碼方面的使用和注意事項。
在以前的開發(fā)中,接口傳參、數(shù)據(jù)返回時使用的是XML,發(fā)現(xiàn)其瓶頸較大,影響系統(tǒng)的擴展和效率, JSon成為一個新標準。
JSon(post,encodeURI,decodeURI):Jquery的ajax方法中,我們可以給導(dǎo)出數(shù)組的時候,我們通常會使用一個手段是在url地址后面加上_GET參數(shù),常見的做法是直接把JSon枚舉出來,類似這樣:
$.ajax({ url: 'getList.php', type:'post', data:{title:'測試'}, success:function(res){ console.log(res) }, error:function (error){ console.log(error) } })
請求參數(shù)為:data:{title:'測試'}
在服務(wù)器端這么處理:
header ("Content-Type: application/json"); die (json_encode ($_POST));
在這個例子中,我們的數(shù)據(jù)格式是{"title":"測試"}。那么在一些特殊情況下,我們可能會需要對這些數(shù)據(jù)進行轉(zhuǎn)碼處理,這時候JQ和PHP就會顯得十分重要。
在JS操作中,常見的轉(zhuǎn)碼函數(shù)有encodeURI、decodeURI、encodeURIComponent和decodeURIComponent。在實際的運用中,首先需要明確兩個概念:
encodeURI是對整個URI進行轉(zhuǎn)碼,而encodeURIComponent則是對URI中的組成部分(除了“:”,“/”,“?”,“#”這些保留字符之外的字符)進行轉(zhuǎn)碼。
比如,如果我們要對字符串“中國”進行編碼,可以寫成這樣:
var str = "中國"; var enstr1 = encodeURI(str); //編碼整個URI var enstr2 = encodeURIComponent(str); //編碼部分URI
那么輸出結(jié)果如下:
console.log(enstr1); //"中國" console.log(enstr2); //"%E4%B8%AD%E5%9B%BD"
在PHP代碼中轉(zhuǎn)碼操作更加方便,只需要使用urldecode和urlencode這兩個函數(shù)即可,與JS語言類似。
在PHP中urldecode多用于解析偽靜態(tài)URL,示例如下:
$arr = array("app"=>"blog","act"=>"view","id"=>"123"); $url = 'http://www.172mt.com/'.urldecode(http_build_query($arr)); echo $url;
在上面的實例中,使用urldecode將輸出結(jié)果中的“%20”轉(zhuǎn)換為原來的空格。如果你想將字符串“I love you”轉(zhuǎn)為“i-love-you”,可以用下面的語句:
$str = strtolower(trim('I love you')); $str = preg_replace("/[\s\W]+/","-",$str); echo $str;
在這個例子中,首先將I love you全部變?yōu)樾懽帜福サ糇址笥覂蓚?cè)的空格,一并進行URL轉(zhuǎn)碼。最后使用preg_replace將所有空格替換為一個“-”。
在前后端開發(fā)中,轉(zhuǎn)碼問題很容易被忽略,但是只要一次偏差,就有可能導(dǎo)致數(shù)據(jù)傳輸不準確,甚至影響系統(tǒng)整體穩(wěn)定性和安全性。因此,在JQ和PHP中進行數(shù)據(jù)轉(zhuǎn)碼處理是非常重要的。
總結(jié)一下,在JavaScript中轉(zhuǎn)碼函數(shù)有encodeURI、decodeURI、encodeURIComponent和decodeURIComponent,而PHP中則是urldecode和urlencode,開發(fā)人員可以根據(jù)具體場景和需求來選擇合適的轉(zhuǎn)碼函數(shù)進行處理。