encodeURIComponent() 函數的使用


說明:encodeURIComponent() 函數可把字符串作為 URI 組件進行編碼。

維護項目中,遇到一個登錄的問題:(用戶的loginName為33195221,密碼為147258369+),在密碼正確的情況下登錄,顯示密碼錯誤。

於是翻看了代碼,看到了登錄請求的代碼為這樣的:

$("#login").click(function() {
    var userName = $("#userName").val();
    var password = $("#password").val();
               
    var url = basePath + '/user/user_login.do';
    url = url + '?user.userName=' + userName + '&user.password=' + password;
    $.ajax({
      url : url,
      dataType : 'json',
      type : "post",
       success : function(data) {
          if (data.resultStatus == 'ok') {
              window.location.href='index.html';
          }else{
              alert('登錄失敗');
           }
       },
       error : function() {
           alert("未能連接到服務器!");
       }
  });

});

訪問的url:

看着沒問題,但是傳到后台后,明顯后面的特殊字符“+”號變成了空格,如下圖:

所以,登錄的時候就顯示密碼錯誤。

解決辦法:

像這種url中帶有特殊字符的情況下,就用encodeURIComponent() 函數,把要編碼的字符串傳進去,比如,剛開始的js代碼中的url關於密碼的那塊,可以這樣改:

url = url + '?user.userName=' + userName + '&user.password=' + encodeURIComponent(password);
這樣就不會把傳過去的特使字符“+”變為空格了。


注:encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

 


免責聲明!

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



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