我们都在 AJAX 教程中看到过一些发送数据的示例。它们都(或多或少)看起来像:
var http = createRequestObject(); // shared between printResult() and doAjax()
function createRequestObject() { /* if FF/Safari/Chrome/IE ... */ ... }
function printResult()
{
if (http.readyState == 4) { ... }
}
function doAjax() {
var request = 'SomeURL';
http.open('post', request);
http.onreadystatechange = printResult;
data = ...; // fill in the data
http.send(data);
}
// trigger doAjax() from HTML code, by pressing some button
这是我不完全理解的场景:如果按钮被快速按下几次怎么办? doAjax() 是否应该以某种方式重新初始化 http 对象?如果对象被重新初始化,已经播出的请求会发生什么情况?
PS:致版主:这个问题可能与社区维基相关。如此处所述 ( https://meta.stackexchange.com/questions/67581/community-wiki-checkbox-missing-in-action ) - 如果我做对了 - 请适本地标记这个问题。
最佳答案
由于 AJAX 具有异步特性,每次单击按钮都会引发异步事件,从服务器获取/发布一些数据。您提供一个回调,因此它会在服务器完成处理数据时触发多次。
这是默认的正常行为,您不应该重新初始化 http 对象。如果您想呈现多个发送操作,您必须手动执行(例如,在第一次调用时禁用按钮)。
我还建议使用 jQuery $.ajax,因为它封装了许多这些细节。
关于javascript - 管理多个 ajax 请求的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934070/