gpt4 book ai didi

javascript - 将参数传递给 ajax onreadystatechange 回调?

转载 作者:行者123 更新时间:2023-12-03 00:44:45 25 4
gpt4 key购买 nike

将参数传递给匿名 onreadystatechange 回调的正常纯 JavaScript(即不是 JQuery)方式是什么?

例如:

function doRequest(){
/* Get an XMLHttpRequest in a platform independent way */
var xhttp = getXmlHttpRequestObject();

var msg="show this message when done"; /* another variable to pass into callback */

/* How do I pass 'msg' and 'xhttp' into this anonymous function as locals
named 'x' and 'm'??? */
xhttp.onreadychangestate=function(x,m)
{
if( x.readyState == 4 )
{
alert(m);
}
}
/* do the open() and send() calls here.... */
}

最佳答案

Javascript 支持闭包,因此您编写的匿名函数将能够从封闭的 doRequest() 范围访问 xhttpmsg

如果想显式地执行此操作(例如,如果您想在代码中的其他位置定义回调函数并重用它),您可以创建一个用于创建回调的函数。这还允许您为变量设置别名,以便使用不同的名称(例如 xm)进行访问:

function createCallback(x, m) {
return function() {
/* Do whatever */
};
}

然后在doRequest()中执行xhttp.onreadystatechange = createCallback(xhttp, msg);

如果您只想“重命名”变量,您可以内联且匿名地执行此操作:

xhttp.onreadystatechange = (function(x, m) {
return function() {
/* Do stuff */
}
})(xhttp, msg);

关于javascript - 将参数传递给 ajax onreadystatechange 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com