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

  • 相关阅读:
    js变量的作用域问题
    HTML网页公用头部与尾部的一些方法
    拖动对象ondrag
    子div设置float后导致父div无法自动撑开的问题
    js像素运算问题
    js自动轮播图片的两种循环方法(原创)
    display:none显示和隐藏
    Linux shell脚本基础学习详细介绍(完整版)一
    java技术思维导图(转载)
    VIM编辑命令的技巧
  • 原文地址:https://www.cnblogs.com/gyhkevin/p/4477108.html
Copyright © 2020-2023  润新知