为了论证,可以说我没有使用闭包,并且不需要多次使用此函数。
var xhr = null;
function quote() {
try {
xhr = new XMLHttpRequest();
}
catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xhr == null) {
alert("Ajax not supported by your browser!");
return;
}
var url = "data.php";
xhr.onreadystatechange = function() {
if ((xhr.readyState == 4) && (xhr.status == 200)) {
var doc = xhr.responseText;
//Parse doc here ?
//Or
//return doc; ?
}
}
xhr.open("GET", url, true);
xhr.send(null);
}
通过doc
专用的解析函数似乎没有必要,但我对 ajax 调用内部的解析感到内疚,就好像这是一个糟糕的设计决策。
有正确的方法来解决这个问题吗?
最佳答案
这可能是一个基于意见的问题,但除了您似乎已经熟悉的一般“保持函数简短,并让它们做一件事”准则之外,我没有看到解析它有任何问题(因此你会感到不安)。除非解析很大,否则似乎不会使函数膨胀太多,并且人们可以认为该函数的目的之一是检索已解析的文档。如果解析超过几行,那么我会将其分开。当然,将其分开可以单独进行测试,这也很有用。
但是(无关)我肯定会将 xhr
变量移动到 quote
函数中,如果这是唯一使用它的地方。另外,在检查时 xhr
不可能为 null
(如果浏览器没有 XMLHttpRequest
或 >ActiveXObject
,该代码在执行检查的行之前抛出)。
关于javascript - 在 AJAX 调用内部进行解析是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825903/