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格式传递就可以了。

 

转载于:https://www.cnblogs.com/gyhkevin/p/4477108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值