当我们使用jquery的$.ajax进行异步请求的时候(或者使用微信小程序自带的wx.request()),总会遇到以下的形式:
regist.on('click',function () { console.log("!!!1"); $.ajax({ type:'post', url:'./api/user/register', data:{ username:registBox.find('[name="username"]').val(), password:registBox.find('[name="password"]').val(), repassword:registBox.find('[name="repassword"]').val() }, dataType:'json', success:function (result) { registBox.find('.myinfo').html("<span style='color: red'>"+result.message+"</span>"); if(result.code == 0){//如果注册成功 registBox.find('.myinfo').html("<span style='color: red'>"+result.message+"</span>"+",请登录"); loginBox.show(); registBox.hide(); } } }); });
这是我曾经写博客系统的一段代码,我有时候就会疑惑success:function(result)里面的result是怎么传递过来的,为啥函数的参数里面会有数据?
今天我们就来探究一下:
其实能够传参的本质就是回调函数的使用,
我们先看一个小demo:
<input type="text" placeholder="请输入你的名称" id="name"> <br/> <input type="text" placeholder="请输入你的座右铭" id="text"> <br/> <input type="submit" id="submit">
有两个text文本框,还有一个submit
<script> var name = document.getElementById('name'); var text = document.getElementById('text'); var submit = document.getElementById('submit'); submit.onclick = function () { var name = text.value; var content = text.value; if(content != null&&name != null){ ajax({ name:name, info:content }) } } function ajax(obj) { success(obj.name,obj.info) } function success(name,info) { console.log("姓名"+name); console.log("座右铭"+info); } </script>
下面是一个简单的模仿形式,当点击submit的时候,得到name与content的值,并传入参数,然后调用函数success,这时候函数的参数中就会有数据了
所以我推测jquery中
function $ajax(obj) { obj.url = ''; obj.method = ''; obj.data = ''; if(true){//请求成功 callback(data); } } function callback(res){ }将从服务器中获得的数据给callback,这时候我们success中就会有数据了。