在AJAX调用中解析是不好的做法?

时间:2013-12-29 14:03:20

标签: 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调用中感到内疚,好像这是一个糟糕的设计决策。

有没有正确的方法去关于这个?

1 个答案:

答案 0 :(得分:1)

这可能是一个基于意见的问题,但是除了一般的“保持功能简短,让他们做一件事”的指导原则你似乎已经熟悉之外我没有看到解决它的任何问题(因此你的不安感)。除非解析很大,否则它似乎不会使函数膨胀很多,并且可以认为该函数的一个目的是检索已解析的文档。如果解析超过几行,那么我会将它分开。当然,保持它是分开的使它可以单独测试,这也是有用的。

但是(无关)我肯定会将xhr变量移动到 quote函数中,如果这是它唯一使用的地方。另外,xhr无法在您检查它时null(如果浏览器没有XMLHttpRequestActiveXObject,则该代码会在行检查)。