ajax回调函数参数传递正确方法 - 网站

ajax回调函数参数传递正确方法

分类:js_jQuery答疑 - 常见问题 · 发布时间:2021-10-08 18:28 · 阅读:9954

ajax回调函数参数传递正确方法,很多朋友习惯的写错了,这里简单的小结下。

属性方法是可以带参数:
复制代码 代码如下:

function ClassX(name) {
this.name = name;
ClassX.prototype.show = function (param) {
alert(this.name + " " + param);
};
}
var o = new ClassX("name");
o.show("param");//name param


但是,上面是虽然是直接在函数签名中定义了参考,如果不是自己调用o.show('param')时,而是通过其他函数回调传入时,就不一定好使了,因为别人在调用此方法时不一定给你传入此参,比如在使用ajax时

request.onreadystatechange=function(param){...}



request.onreadystatechange=callBack;function callBack(param){...}

时就不好使了,因为此时ajax根本就没有给你传递param参数,正确做法形如:
复制代码 代码如下:

//request.onreadystatechange = orgEval;//错误作法

//request.onreadystatechange = function (request, pOrgName) {//错误作法
// orgEval(request, pOrgName);
//};

//...
request.onreadystatechange = function () {//正确作法
orgEval(request, pOrgName);//在匿名函数内调用回调实现,并直接传入参数,这里用到了JavaScript的闭包性质
};
//...

function orgEval(req, orgName){
//...
}

这样通过在匿名函数内调用回调实现函数,并且直接传入参数即可。

ajax传递参数给onreadystatechange的回调函数

这几天开始学习ajax,其中自己做试验页面时有了传参数给XMLHttpRequest.onreadystatechange的回调函数这个需求。如是baidu了下,发现说到这个的人不少啊。搜来的办法大概是这样:

xmlHttp.onreadystatechange=function(){callback(a,b);};

其中就传递了a和b两个参数。

后来我又自己发现了个方法,方法知道的人肯定很多,不过我在baidu上没搜到,这里就写出来,推广下咯。

复制代码 代码如下:

xmlHttp.a=a;
xmlHttp.b=b;
xmlHttp.onreadystatechange=callback;
.
.
function callback()
{
    if(this.readyState==4)
    {
        a=this.a;
        b=this.b;
    .
    }
}

也就是给xmlHttp对象增加两个属性,在回调函数中直接用this调用那两个属性。

另外说点自己的小经验,xmlHttp最好要写成全局变量,我一开始发现总有些请求没达到目的。后来才发现是把xmlHttp写在了一个函数里面,当那个函数运行完了,xmlHttp生命周期也结束了。这样有些请求在生命周期结束之前就实现了,而有些请求就没了。

标签:
回调函数

相关文章

AJAX乱码与异步同步以及封装jQuery库实现步骤详解

这篇文章主要介绍了异步通信技术AJAX乱码问题、异步与同步、手动封装一个jQuery库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

AJAX的跨域问题解决方案

跨域简单的说,就是从一个域名的网页去访问另一个域名网页的资源,下面这篇文章主要给大家介绍了关于AJAX的跨域问题解决的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

利用Ajax实现智能回答的机器人示例代码

这篇文章主要介绍了利用Ajax实现智能回答的机器人,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

ajax、axios和fetch之间优缺点重点对比总结

今天被问到用没用过ajax axios,我回答经常用axios,但ajax用的比较少,下面这篇文章主要给大家介绍了关于ajax、axios和fetch之间优缺点重点对比总结的相关资料,需要的朋友可以参考下

如何通过axios发起Ajax请求(最新推荐)

Axios是专注于网络数据请求的库,相比于原生的XMLHttpRequest对象,axios简单易用。相比于Jquery,axios更加轻量化,只专注于网络数据请求,这篇文章主要介绍了如何通过axios发起Ajax请求,需要的朋友可以参考下

返回分类 返回首页