用回调函数封装AJAX 和 jquery框架

回调函数封装AJAX

        设计一个tool工具函数用来封装AJAX请求,tool函数传入两个参数,第一个参数代表对应的网址,第二个参数是一个callback回调函数,当网络请求返回数据时,就把返回的数据传入callback函数。

        tool函数代码:

function tool(url,callback) {
    var xhr = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP")
    xhr.open("GET",url,true)
    xhr.send()
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            callback(xhr.responseText)
        }
    }
}

        index.js文件代码:

var router = require("./router.js")

router.get("/goods", function (req,res) {
    var obj = {
        data: [{
                name: "衣服",
                price: 123
            },
            {
                name: "裤子",
                price: 99
            },
            {
                name: "鞋子",
                price: 255
            }
        ]}
    var str = JSON.stringify(obj)
    res.setHeader("content-Type","text/json;charset=utf8")
    res.end(str)

})

        router.js文件代码:

var fs=require("fs")
var url=require("url")
var querysting=require("querystring")
var mime=require("mime")
let urls={}
var http=require("http")

let router=function(req,res){
	//这个函数每次用户访问时运行
	let pathname=url.parse(req.url).pathname
	fs.readFile(router.basepath+pathname,(err,data)=>{
		if(!err){
			res.setHeader("content-Type",mime.getType(pathname))
			res.end(data)
		}else{
			if(!urls[pathname]){res.end("404 not found-mymvc")}
			else{urls[pathname](req,res)}
		}
	})
}
router.static=function(path){
	this.basepath=path
}

router.get=function(url,cb){
	urls[url]=cb
}
router.basepath=__dirname+"/public"
http.createServer(router).listen(8081)
module.exports=router;

        index.html文件代码:

    <script src="./tool.js"></script>

    <button onclick="fn()">点击用ajax请求数据</button>

    <script>

        function fn() {
            tool("/goods",function(str) {
                var obj = JSON.parse(str)
                for(let i=0;i<obj.data.length;i++){
                    console.log(obj.data[i]);
                }
            })
        }

    </script>

结果:

jQuery框架 

        可以直接使用jQuery 函数库来进行ajax请求:

        (1)首先可以通过http://cdn.bytedance.com/  这个网址去访问字节跳动静态资源库,然后在搜索框中输入要搜索的包名,如:(jquery),然后找到想要得到的版本的包,并复制资源包的地址

        然后在index.html文件代码中引入jquery:

<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.2.4/jquery.js"></script>

使用时,可以使用 $.get() 方法:

<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/2.2.4/jquery.js"></script>

    <button onclick="fn()">点击用ajax请求数据</button>

    <script>

        function fn() {
            $.get("/goods",function(res) {
                var obj = res
                for (let i = 0; i < obj.data.length; i++) {
                    console.log(obj.data[i]);
                }
            })
        }

    </script>

同样使用之前的案例的数据,得到结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_小张同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值