AJAX:如何在一个函数中并行使用两个xmlHttpRequest?

时间:2010-08-29 06:33:46

标签: javascript ajax xmlhttprequest

我该怎么做?

function(id,id2){

    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
    } else { // code for IE6, IE5
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  

第一次请求:

   xmlhttp.open("GET", "http://example.com/ajax.php?id="+id, true);

   xmlhttp.send();
     

第二次请求:

   xmlhttp.open("GET", "http://example.com/ajax2.php?id2="+id2, true);

   xmlhttp.send();
     

}

因为这样不起作用。

我想用普通的javascript制作它,所以请不要用jQuery或任何库等发布答案。

由于

2 个答案:

答案 0 :(得分:7)

如果您创建一个新的xmlhttp对象,它应该可以工作。目前,您正在尝试重用同一个对象,该对象已在执行查询,因此无法正常工作。

答案 1 :(得分:1)

如果您正在寻找经典的javascript风格,可以使用如下。但是使用jQuery是简单而全面的。需要注意的一点是“xmlhr”应该在方法(callAjax)范围内。

function callAjax(url) {
        var xmlhr;

        if (window.XMLHttpRequest) {
            xmlhr = new XMLHttpRequest();
        } else {
            xmlhr = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhr.onreadystatechange = function () {
            if (xmlhr.readyState == 4 && xmlhr.status == 200) {
                alert(xmlhr.responseText);
            }
        }
        xmlhr.open("GET", url, true);
        xmlhr.send();
    }

    function myFunction(id1, id2) {
        callAjax("http://example.com/ajax2.php?id2=" + id1);
        callAjax("http://example.com/ajax2.php?id2=" + id2);
    }