【发布时间】:2021-06-02 15:06:07
【问题描述】:
为什么send 经常被称为
xhr.send(null)
而不是
xhr.send()
?
W3、MDN 和 MSDN 都声明它是可选的。此外,ActiveX 控件doesn't seem to need the argument:
hr=pIXMLHTTPRequest.CreateInstance("Msxml2.XMLHTTP.6.0");
SUCCEEDED(hr) ? 0 : throw hr;
hr=pIXMLHTTPRequest->open("GET", "http://localhost/books.xml ", false);
SUCCEEDED(hr) ? 0 : throw hr;
hr=pIXMLHTTPRequest->send(); // <-- this line
SUCCEEDED(hr) ? 0 : throw hr;
send(null)的做法至少可以追溯到2005 in Google Maps,但是被缩小了,没有解释:
Y.asynchronousTransform = function (qc, vb, kc, Nc, Ba) {
if (m.type == 3) return;
var cc = Y.getCached(kc);
if (cc) {
cc.transformToHTML(qc, vb);
if (Nc) Nc();
return
}
var yc = qa.create(Ba);
var sa = Xd.create();
nd('<a href="' + kc.xmlEscape() + '">' + kc.xmlEscape() + "</a>", 0);
sa.open("GET", kc, true);
sa.onreadystatechange = function () {
if (sa.readyState == 4) {
if (yc.isValid()) {
try {
var Db = sa.responseXML;
var cc = Y.create(Db);
Y.cache(kc, cc);
cc.transformToHTML(qc, vb);
if (Nc) Nc()
} catch (b) {}
}
}
};
sa.send(null)
}
【问题讨论】:
-
只是明确表示在请求标头之后没有任何内容发送到服务器。
-
人们可以做
while (i),为什么还要做while (i > 0)?这只是一种风格。 -
@PaulS ...因为
i可能是负数? -
您是否尝试过谷歌搜索如何发出 Ajax 请求,每个示例都有 .send(null) 并且我猜旧习惯很难改掉,可能适合这句口头禅“如果不是就不要修复它” t坏了”
-
@DaveMackintosh 我做到了,但似乎
null从来没有必要。
标签: javascript ajax