我遇到了一个似乎使用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()');
我必须承认,这是我第一次看到一个页面,我无法弄清楚是怎么做的。我有几个问题:
有什么建议吗?
答案 0 :(得分:1)
这只是一个使用XMLHttpRequest
对象执行HTML异步请求以更新现有文档的函数。
它本身不是一种模式,它只是动态更新文档的众多方法之一。
它不是'服务器端Ajax'(那是什么?),它只是用于更新页面的简单ajax。
你为什么要用呢?当只需要更新一小部分时,避免必须刷新整个页面。没有合格的开发人员会使用它来进行混淆。
如果可以使用相同的?当然..如果那就是你需要的。如果你应该?为什么不 - 如果那就是你需要的。
答案 1 :(得分:1)
不确定你在这里问的是什么,但给出的功能实际上相当简单。解码变量/参数:
正是为什么他们使用这种特殊的方法我真的不能说 - 看到使用这个功能的完整页面可能有所帮助。
我不认为它隐藏任何设计细节。它确实看起来对我来说有点奇怪,但正如我上面所说的那样,在它正在使用的页面的工作方式中可能有特定的原因。
您可以使用此代码吗?肯定。
你应该使用这段代码吗?答案是:它是适合这项工作的工具吗?
将现有代码转换为使用此方法有多难?这取决于您现有的代码以及这是否适合该工作。
答案 2 :(得分:1)
AJAX只是使用XMLHttpRequest
将Web内容从服务器异步加载到您的网络文档中的热门话题。
该函数调用是一个普通XMLHttpRequest
调用,它从page.php
请求数据(异步而不重新加载页面)并将所有响应文本放入document.getElementById(b).innerHTML
。最后,当收到回复时,它似乎会调用LoadSamples()
回调。
答案 3 :(得分:0)
有什么问题?在我看来它只是某人的家庭滚动ajax更新帮助功能。我们中的许多人在很多时候写过很多这些。