使用jquery所封装的ajax时,对应的数据交互(初级)

学习案例:

准备部分:
(1)定义接口:/user/act=reg(表示注册)
/user/act=login(表示登录)
(2)当地址有后缀如.html /.jpg等等时,表示想要请求的是文件。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录/注册页面</title>
    <script src="jquery-1.9.1.min.js"></script>
</head>
<body>
    <label>用户名:<input type="text" id="user"/></label><br/>
    <label>密码:<input type="password" id="pswd"/></label><br/>
    <input type="button" id="login" value="登录"/>
    <input type="button" id="register" value="注册"/>
    <script>
        $(function(){

            //登录
            $("#login").click(function(){
                let user=$("#user").val();
                let pswd=$("#pswd").val();
                $.ajax({
                    url:'/user',
                    type:'get',
                    dataType:'json',
                    data:{'act':'login','user':user,'pswd':pswd},
                    success(data){
                        console.log(data);
                        if(data.ok==true){
                            window.location.href='main.html';
                        }else{
                            alert("登录失败的原因:"+data.msg);
                        };
                    },
                    error(err){
                        console.log("出错了:"+err);
                    }
                })
            });
            //注册
            $("#register").click(function(){
                let user=$("#user").val();
                let pswd=$("#pswd").val();
                $.ajax({
                    url:'/user',
                    type:'get',
                    dataType:'json',
                    data:{'act':'reg','user':user,'pswd':pswd},
                    success(data){
                        console.log(data);
                        if(data['ok'==true]){
                            alert(data['msg']);
                        }else{
                            alert(data['msg']);
                        }
                    },
                    error(err){
                        console.log("出现错误:"+err);
                    }
                })
            })
        })
    </script>
</body>
</html>

服务器端代码:

const http=require("http");
const urlBoss=require("url");
const path=require("path");
const fs=require("fs");
const querystring=require("querystring");
let dataK={};//用于存放用户提交的信息
http.createServer(function(req,res){
    let str='';//post方式下获得的数据
    req.on('data',function(data){
        str+=data;
    });
    req.on('end',function(){
        let obj=urlBoss.parse(req.url,true);
        let url=obj.pathname;
        let GET=obj.query;
        let POST=querystring.parse(str);
        //let dataK={'tom':123,'liming':456};虚拟数据库
        //读取接口
        if(url==='/user'){
            switch(GET.act){
                case 'login':
                    //判断该用户是否已经存在
                    //若存在已经登录成功,若不匹配则登录失败
                    if(dataK[GET.user]==null){
                        res.write('{"ok":false,"msg":"用户名不存在"}');

                    }else if(dataK[GET.user]!=GET.pswd){
                        res.write('{"ok":false,"msg":"密码不匹配"}');
                    }else{
                        res.write('{"ok":true,"msg":"登陆成功"}');
                    };
                    break;

                case 'reg':
                    //判断该用户是否已经存在,若存在则提示用户已经存在,注册失败
                    if(dataK[GET.user]){
                        res.write('{"ok":false,"msg":"该用户名已经被注册"}');
                    }else{
                        //否则写入数据库注册成功
                        dataK[GET.user]=GET.pswd;
                        res.write('{"ok":true,"msg":"注册成功"}');
                    }
                    break;
                default:
                    res.write('{"ok":false,"msg":"未知的act"}');
                    break;
            }
            res.end();

        }else{//读取文件
            let filename=path.join(__dirname,'www',url);
            fs.readFile(filename,function(err,data){
                if(err){
                    console.log("文件读取失败");
                }else{
                    res.setHeader('Content-Type','text/html;charset=utf-8');
                    res.write(data);
                }
                res.end();
            })
        }
    });
}).listen(8881,function(){
    console.log("the server is running");
});

具体运行过程:
(1)在命令行node server.js启动服务
(2)在浏览器的地址栏中输入http://localhost:8881/index.html
在这里插入图片描述

在这里插入图片描述
注册成功之后点击登录:
在这里插入图片描述
备注:需要说明的是两个用于解析我们获得的数据的模块:
querystring模块---------它解析的是参数部分
url模块-----------它解析的是url整个地址,并且当它的第二个参数设为true时,参数部分也分成了JSON的形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值