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:

896091-20171116151805359-1847329228.png

看着没问题,但是传到后台后,明显后面的特殊字符“+”号变成了空格,如下图:

896091-20171116152104421-137757460.png

所以,登录的时候就显示密码错误。

解决办法:

像这种url中带有特殊字符的情况下,就用encodeURIComponent() 函数,把要编码的字符串传进去,比如,刚开始的js代码中的url关于密码的那块,可以这样改:

url = url + '?user.userName=' + userName + '&user.password=' + encodeURIComponent(password);
这样就不会把传过去的特使字符“+”变为空格了。


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

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值