javascript - 在 AJAX 调用内部进行解析是一种不好的做法吗?

标签 javascript ajax

为了论证,可以说我没有使用闭包,并且不需要多次使用此函数。

    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/

相关文章:

javascript - 无法加载简单的函数

javascript - ASP.Net - AJAX 更新面板中的 Javascript

php - 元素未从 DOM 中删除

jquery - History.js + 表单?

jquery - 有没有办法让 jQuery BBQ Google 可索引?

javascript - Vue 使用 v-for 迭代 API 响应的嵌套数组

javascript - Dotenv 没有将值作为字符串获取

javascript - JS - 窗口焦点并在 Firefox 中置于前端

javascript - 如何使用 Jquery 在 HTML 表格中添加行?

javascript - AJAX HTML 标签不会显示为 HTML 标签,而是在验证时显示为普通文本