【问题标题】:How can I have a double Ajax request?我怎样才能有双重 Ajax 请求?
【发布时间】:2012-03-27 16:19:09
【问题描述】:

我有一个问题:我想要一个双 Ajax 请求,但我不能。 例如,我有一个 PHP (rand.php) 页面,它返回一个随机数。 代码:

<?php
$rand = rand(0,10);
echo $rand;
?>

在另一个页面中,我想创建一个 Ajax 请求,该请求从 rand.php 获取随机数两次并将其写入不同的 div。

<head>
<script type="text/javascript">
http = new XMLHttpRequest;
function rando(div){
http.onreadystatechange = function(){
    if (http.readyState == 4 && http.status == 200){
    document.getElementById(div).innerHTML = http.responseText;
        }
    }
    http.open("GET","rand.php",true);
    http.send();

}
</script>
</head>
<body>
<div id="div1"></div><br />
<div id="div2"></div><br />
<button onclick="rando('div1');rando('div2')">Randomize!</button>
</body>

它不起作用。请帮帮我!

【问题讨论】:

  • 您是否在任何地方初始化http?在您的代码中 http 没有定义,所以当然“它不起作用”。 OT:您也可以在 JavaScript 中生成随机数。我建议你在继续之前先看看developer.mozilla.org/en/AJAX/Getting_Started
  • 你说不行。你能描述一下发生了什么吗?
  • 我和菲利克斯在一起。您需要为每个请求将您的 http 对象初始化为一个新的 AJAX 请求对象。

标签: javascript xml ajax request


【解决方案1】:

是的,正如其他人指出的那样,您的 http 在所有呼叫者之间共享 rando。您应该在 rando 中创建一个新的。

顺便说一句,这不适用于所有浏览器。您需要在早期版本的 Internet Explorer 上创建不同类型的 http 请求对象。

【讨论】:

    【解决方案2】:

    每次调用 rand.php 时都必须初始化 XMLHttpRequest:

    <head>
    <script type="text/javascript">
    function rando(div)
    {
        var http = new XMLHttpRequest;
        http.onreadystatechange = function()
        {
            if (http.readyState == 4 && http.status == 200) {
                document.getElementById(div).innerHTML = http.responseText;
            }
        }
        http.open("GET","rand.php",true);
        http.send();
    
    }
    </script>
    </head>
    <body>
    <div id="div1"></div><br />
    <div id="div2"></div><br />
    <button onclick="rando('div1');rando('div2')">Randomize!</button>
    </body>
    

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 2012-06-14
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多