javascript – 管理多个ajax请求的正确方法是什么?

我们都在 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具有异步特性,因此每次按下按钮都会引发异步事件,从而将某些数据从FROM / TO服务器获取/ POST.您提供一个回调,因此它将在服务器完成处理数据时被触发多次.

认情况下这是正常行为,您不应重新初始化http对象.如果要呈现多个发送操作,则必须手动执行此操作(例如,在首次调用时禁用按钮).

我还建议使用jQuery $.ajax,因为它包含了许多这些细节.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...