澄清一些代码

时间:2010-05-20 18:20:35

标签: javascript

我遇到了一个似乎使用Ajax的网站但没有包含任何js文件,除了一个名为ajax.js的文件,其中包含以下内容:

function run(c, f, b, a, d) {
    var e = null;
    if (b && f) {
        document.getElementById(b).innerHTML = f
    }
    if (window.XMLHttpRequest) {
        e = new XMLHttpRequest()
    } else {
        if (window.ActiveXObject) {
            e = new ActiveXObject(Microsoft.XMLHTTP)
        }
    }
    e.onreadystatechange = function () {
        if (e.readyState == 4) {
            if (e.status == 200 || e.statusText == "OK") {
                if (b) {
                    document.getElementById(b).innerHTML = e.responseText
                }
                if (a) {
                    setTimeout(a, 0)
                }
            } else {
                console.log("AJAX Error:  " + e.status + " | " + e.statusText);
                if (b && d != 1) {
                    document.getElementById(b).innerHTML = "AJAX Error.  Please try refreshing."
                }
            }
        }
    };
    e.open("GET", c, true);
    e.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    e.send(null)
}

就像你可能已经猜到的那样,它在页面内部发出查询的方式如下:

run('page.php',loadingText,'ajax-test', 'LoadSamples()');

我必须承认,这是我第一次看到一个页面,我无法弄清楚是怎么做的。我有几个问题:

  • 这是服务器端Ajax还是 相似的东西?如果没有,可以有人 澄清究竟是什么?
  • 为什么要用这个?是隐藏设计细节吗? (以javascript纯文本显示)
  • 转换我的文章有多难 现有的应用到这个设计中 图案? (也许是一个主观问题,但任何简短的建议都会这样做)

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

这只是一个使用XMLHttpRequest对象执行HTML异步请求以更新现有文档的函数。

它本身不是一种模式,它只是动态更新文档的众多方法之一。

它不是'服务器端Ajax'(那是什么?),它只是用于更新页面的简单ajax。
你为什么要用呢?当只需要更新一小部分时,避免必须刷新整个页面。没有合格的开发人员会使用它来进行混淆。 如果可以使用相同的?当然..如果那就是你需要的。如果你应该?为什么不 - 如果那就是你需要的。

答案 1 :(得分:1)

不确定你在这里问的是什么,但给出的功能实际上相当简单。解码变量/参数:

  • e = AJAX请求对象
  • c =发送AJAX请求的页面
  • f =加载要在指定元素b
  • 中显示的文本
  • b =要在
  • 中显示结果的元素的id
  • a =如果ajax请求成功则调用的函数
  • d =布尔值 - 如果为true,则在失败时显示错误

正是为什么他们使用这种特殊的方法我真的不能说 - 看到使用这个功能的完整页面可能有所帮助。

我不认为它隐藏任何设计细节。它确实看起来对我来说有点奇怪,但正如我上面所说的那样,在它正在使用的页面的工作方式中可能有特定的原因。

您可以使用此代码吗?肯定。

你应该使用这段代码吗?答案是:它是适合这项工作的工具吗?

将现有代码转换为使用此方法有多难?这取决于您现有的代码以及这是否适合该工作。

答案 2 :(得分:1)

AJAX只是使用XMLHttpRequest将Web内容从服务器异步加载到您的网络文档中的热门话题。

该函数调用是一个普通XMLHttpRequest调用,它从page.php请求数据(异步而不重新加载页面)并将所有响应文本放入document.getElementById(b).innerHTML。最后,当收到回复时,它似乎会调用LoadSamples()回调。

答案 3 :(得分:0)

有什么问题?在我看来它只是某人的家庭滚动ajax更新帮助功能。我们中的许多人在很多时候写过很多这些。