jQuery使用ajax方法提交登陸信息時,遇到特殊字符&


當我在做登陸頁面的時候,常常會用到ajax方法來檢測用戶信息所填寫的內容是否符合規范要求。一開始,為了簡單明了,快速實現功能,在使用jQuery時,是這樣寫的:

$.ajax({
    url : "{:U('public/checklogin')}",
    cache : false,
    type : 'POST',
    dataType : 'json',
    data : 'username='+$('#username').val()+'&password='+$('#password').val()+'&verify='+$('#code').val(),
    success : function(e){
        if ( e.status == 0 ){
            verif_error(e.info);             
        }else{
            alert('檢測通過!');
        }
    }
});

用的時候基本沒有什么問題,data的數據是通過對應字段的ID獲得的值,再通過ajax傳遞給后台,PHP處理后,返回結果。

但是這里忽略了一個特殊字符&.

如果用戶傳過來的password或者其他字段中帶有&的話,它會將字符串切割成兩個部分。比如說password=abc&123,當后台想要接收password.

 

echo $_POST['password'];
//結果輸出的只有abc

 

前台頁面上的值在傳遞給$.ajax()方法傳遞時,它會自動將其轉義。

所以解決方案可以是這樣子:

var datas = { 'username':$('#username').val(),'password':$('#password').val(),'verify':$('#code').val()};
$.ajax({
    url : "{:U('public/checklogin')}",
    cache : false,
    type : 'POST',
    dataType : 'json',
    data : datas,
    success : function(e){
        if ( e.status == 0 ){
            verif_error(e.info);             
        }else{
            alert('檢測通過!');
        }
    }
});

用json格式傳遞就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM