原生js封装ajax的函数(运用promise的回调函数)

//原生ajaxd的post请求模式
//预设ajax中的传输方式(post/get),地址,数据,传输形式
function ajax(methods,url,data,dataType){
    return new Promise((resolve,reject)=>{ //使用promise方式 
        var xhr=window.XMLHttpRequest?
        new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");
        //判断当前浏览器是否为ie
        xhr.open(methods,url,true);//设置open的内容,第三个参数是是否打开异步,默认不填也是true(异步)
        if(methods=="post"){//如果当前用户用得到是post方式传递数据则需要添加请求头
            xhr.setRequestHeader(
                "Content-Type", "application/x-www-form-urlencoded");
        }
        
    var data2='';
    for(var i in data) {//设置当前传递的数据改为字符串形式传递给后端
            data2+=i+"="+data[i]+"&";
        }
        data2=data2.slice(0,data2.length-1)   //删除改字符串的最后一个&字符
        xhr.onreadystatechange=()=>{
            if(xhr.readyState==4){//判断当前的状态值
                if(xhr.status==200){
                    if(dataType=="json"){//判断当前是否需要传递json的值
                        resolve(JSON.parse(xhr.responseText))
                    }else{
                        resolve(xhr.responseText)
                    }
                   
                }else{
                    reject("请求出错:"+xhr.status)
                }
            }
        }
        xhr.send(data2);
    })
}
var data={
    uname:"gfz",
    upwd:123
    }; 
dataType="json";

ajax("post","login2.php",data,"text").then(function(data){//返回resolve
    console.log(data)
}).catch(function(data){//错误返回reject
    console.log(data)
});








php可以看下这个
<?php
//1:设置响应头 json
// header("Access-Control-Allow-Origin:*");
header("Content-Type:application/json;charset=utf-8");
//4:获取用户名参数
//5:获取密码参数
$u = $_POST['uname'];
$p = $_POST['upwd'];

//5.1通过正则表达式在PHP对用户参数再验证
$uPattern = '/[a-zA-Z0-9]{3,12}/';
$pPattern = '/[a-zA-Z0-9]{3,12}/';
if(!preg_match($uPattern,$u)){
 echo '{"code":-2,"msg":"用户名格式不正确"}';
 exit;//停止php运行
}
if(!preg_match($pPattern,$p)){
 echo '{"code":-2,"msg":"密码格式不正确"}';
 exit;//停止php运行
}

echo "登陆成功"; 

?>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值