0

javascriptのみを使用し、Jqueryを使用せずに複数のajax呼び出しを実行することはできませんか? 以下の JavaScript コードを 2 つの ajax 呼び出しで試しましたが、2 回目の ajax 呼び出しを行うとコードが機能しません

<script type="text/javascript">

var class1;
var class2;
var sec1;
var sec2;

function func()
{
class1 = document.getElementById('selcla');
class2 = class1.options[class1.selectedIndex].value;

if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
      }
else
      {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
xmlhttp.onreadystatechange=function()
      {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("secdiv").innerHTML=xmlhttp.responseText;
        }
      }
xmlhttp.open("GET","getsec.php?q="+class2,true);
xmlhttp.send();

}


function funcsec()
{
sec1 = document.getElementById('selsec');
sec2 = sec1.options[sec1.selectedIndex].value;
alert("selecting class and section details " + class2 + " " + sec2 );

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

xmlhttp.onreadystatechange=function()
      {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        alert("successfully received " );
        document.getElementById("studiv").innerHTML=xmlhttp.responseText;
        }
    else 
        alert("unsuccessful ajax second call ");
      }
xmlhttp.open("GET","getstu.php?x="+class2"&y="+sec2,true);
xmlhttp.send();
}

4

1 に答える 1

0

ただし、リクエストごとに異なる「xmlhttp」ハンドラが必要です。新しい xmlhttp オブジェクトをセットアップし、新しいオブジェクトで 2 番目のリクエストを作成します。

私の提案は、xmlhttp オブジェクトをスタンドアロン関数に初期化する部分を分割し、それを使用してそれらのオブジェクトのいくつかのインスタンスを作成することです。

しかし、私はそのようなアプローチに反対するよう忠告しなければなりません。ajax リクエストにはライブラリを使用することをお勧めします。

于 2013-09-03T10:36:16.507 に答える