0
以下是我知道的向XMLHttpRequest的请求处理程序添加参数的方法。将EXTRA参数添加到XMLHttpRequest处理程序
var request = new XMLHttpRequest();
function ABC() {
if (request) {
request.open('GET', url, true);
request.onreadystatechange = function() { handler(param1, param2); };
request.send();
}
}
function handler(param1, param2) {
if (request.readyState == 4) {
if (request.status == 200) {
//do something on success
} else {
alert("Invocation Errors Occured");
}
}
}
这很好,很好。但是,请看下面的代码。
var request = new XMLHttpRequest();
function ABC() {
if (request) {
request.open('GET', url, true);
request.onreadystatechange = handler;
request.send();
}
}
function handler(evtXHR) {
if (request.readyState == 4) {
if (request.status == 200) {
//do something on success
} else {
alert("Invocation Errors Occured");
}
}
}
在这里,我打电话不带任何参数的处理程序,但我在代码的evtXHR
参数越来越XMLHttpRequestProgressEvent
类型的对象。
现在我有两个问题。
- 当我进行无参数调用时,我如何得到
evtXHR
参数? - 如何添加一个参数以及
evtXHR
这样我仍然可以得到XMLHttpRequestProgressEvent
对象?
所以,我想是这样的:
function handler(evtXHR, myParam) {
if (request.readyState == 4) {
if (request.status == 200) {
//do something on success
} else {
alert("Invocation Errors Occured");
}
}
}
我知道可以做,在-事实上,我已经在做了。虽然我想知道它是否可以在没有全局变量的情况下完成。 – Adze 2014-10-04 09:01:19
是的。你把它全部放在一个函数中(例如创建'xhr'对象的函数)。 “myData”没有理由成为全球性的。 – Quentin 2014-10-04 09:21:20
是的,这是一个很好的解决方法!但是没有办法像我提到的那样做一些事情?像传递一个额外的参数方法来做到这一点? – Adze 2014-10-04 10:10:59