最近在寫一個(gè)頁(yè)面,用jquery ajax來(lái)實(shí)現(xiàn)判斷,剛寫好測(cè)試完全沒(méi)有問(wèn)題,過(guò)了兩天發(fā)現(xiàn)出現(xiàn)問(wèn)題,判斷不成了。后來(lái)發(fā)現(xiàn)所有alert出來(lái)的返回值前面都會(huì)加若干換行和空格。(至今不明白,同一臺(tái)電腦,同樣的環(huán)境,為什么出現(xiàn)這樣的問(wèn)題)
后來(lái)在網(wǎng)上發(fā)現(xiàn)也有人遇到了相同的問(wèn)題。無(wú)論是jquery $.ajax $.get $.post 在或者是原聲的XMLHttpRequest方法都存在這種問(wèn)題,這樣調(diào)用的時(shí)候和判斷的時(shí)候,有時(shí)候會(huì)出錯(cuò)。看例子
ajax代碼:
$.get('ajax.php',{'name':name},function(data){
alert(data);
})
ajax.php
<?php
$username = $_GET['name'];
echo $username;
?>
明顯name為google的字符串前面有換行或空格,這樣嚴(yán)重的影響了程序的穩(wěn)健性,我都遇到出現(xiàn)了問(wèn)題,下面程序的判斷都不成立。因此我們需要用正則表達(dá)式的方法來(lái)去除,因此我們可以這樣寫
$.get('ajax.php',{'name':name},function(data){
newData=data.replace(/\s/g,'');
alert(newData);
})
ajax.php不用變
然后就沒(méi)有換行空格了。
我在網(wǎng)上看到的都是用
newData=data.replace(/rn/g,'');
但我發(fā)現(xiàn)這個(gè)正則對(duì)我的有問(wèn)題,前面只減少了一部分空白字符,因此我判斷空白字符里應(yīng)該有除了換行回車外的其余空白字符,因此選用了\s。
/.../g 是正則表達(dá)式的屬性, 表示全文匹配, 而不是找到一個(gè)就停止