将AJax封装成fetch的方式

客户端:

 

            return new Promise((resolve,reject)=>{
                var xhr=new XMLHttpRequest()
                xhr.open(method,url)
method.toLowerCase()==="post" && body ? xhr.send(typeof body==="object"JSON.stringify(body) :body) : xhr.send()
复制代码
            xhr.onreadystatechange=function(){
                if(xhr.status===200 && xhr.readyState===4){
                    var o
                    try{
                        o=JSON.parse(xhr.response)
                    }catch(e){
                        o=xhr.response
                    }
                    resolve(o)
                }
            }
        })
    }
    init()
    async function init(){
        // 1.GET方式
        var data
        // data=await ajax("http://localhost:4010/addgoods?a=11&b=22")
        // 2.POST方式
        data=await ajax("http://localhost:4010/addgoods?a=11&b=22",{
            method:"post",
            body:{c:15,d:20}
        })
        console.log(data)
    }
复制代码

服务端:

    var querystring = require("querystring")
    http.createServer(async(req, res)=>{
        var [router,param] = req.url.split("?")
        // 接受地址传来的参数
        param = querystring.parse(param)
        console.log(param,router)
        // 接受post发过来的消息
        var body =await getData(req)
复制代码
    console.log(body)
    
    
    res.writeHead(200, {
        "Content-Type": "text/html;charset-utf-8",
        // 跨域服务
        "Access-Control-Allow-Origin": "*"
    })
    res.end(JSON.stringify({a:10,b:20}))
}).listen(4010)
function getData(req){
   return new Promise((resolve,reject)=>{
       var data=""
        req.on("data",function(_data){
            data+=_data
        })
        req.on("end",function(){
            // 结束时将其传出
            var o
            try{
                // 可以使用json传送数据
                o=JSON.parse(data)

            }catch(e){
                o=querystring.parse(data)
            }
            resolve(o) 
        })
   })
}

你可能感兴趣的:(JavaScript知识点分享,node.js,前端,javascript)