0

以下で同様の問題が発生しました 。2つのAJAXコマンドが機能しますが、最後の「responseText」しか表示されません。

しかし、私はフィールドの配列を使用しているので、それが異なるかどうかはわかりません。テストのために、これを上部に追加して、いくつかのデータを定義しました。

<?php
    $a = array('star_wars','marvel','board_games','','The_Han_Solo_Omnibus');
    $b = implode("~",$a);
    $count = count($a);
?>

私は彼が定義した上記の答えを見ました:var httpRequest; 問題を解決します。試しました--varxmlhttp; しかし、それはそれをしませんでした。

最後のセクションだけでなく、すべてのセクションをロードする方法について何かアイデアはありますか?たくさんの遅延を追加しましたが、何も機能していません。

ありがとう

<script>

function showDiv(a)
{
var temp = new Array();
var delay = 2000;            // 1 second
var result = 'loading';    // the result from your AJAX response
var xmlhttp;

        temp = a.split('~');
        for(i=0;i<temp.length;i++)
        {
            alert(temp[i]); 
                divno =  i + 1;
            currentdiv = "loadArea" + divno;
            alert (currentdiv);

                    //var pageNumber = 1;
                    //eval("var text" + pageNumber + "=123;");
                    //alert(text1);

            if (temp[i]=="")
                  {
                  document.getElementById(currentdiv).innerHTML=""; //increment
                  }

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

            xmlhttp.onreadystatechange=setTimeout(function()  //increment
                    {
                        alert ("inreadystate");
                         if (xmlhttp.readyState==4 && xmlhttp.status==200) //increment
                                {
                                if (temp[i] !="") {
                                setTimeout(function() {     
                                document.getElementById(currentdiv).innerHTML=xmlhttp.responseText; //increment                         

                                                    }, delay);



                                alert ('valueisgood');
                                                 }

                                }
                      }, delay);


                                if (temp[i] !="") {
                                    url = "http://zocreative.com/load.php?f="+temp[i];
                                    xmlhttp.open("GET",url,true);
                                    xmlhttp.send();
                                }

                  } 
        }





</script>
</head>
<body id="page1" onload="showDiv('<?php echo $b; ?>');">

<?php

$i = 1;
while ($i <= $count) {

    echo ("<div id='loadArea". $i ."'><br />
    <!-- AJAX content will load here-->
    loading ... ". $i ."
    </div>");
      /* the printed value would be
                   $i before the increment
                   (post-increment) */
    $i++;
}
?>
<div id="note"></div>
4

1 に答える 1

0

jQuery.load( http://api.jquery.com/load/)を確認することを強くお勧めします。あなたがやろうとしていることは、あなたが書いたコードほど複雑ではありません。

ここでは正確な構文を保証するつもりはありませんが、jQueryとjQueryのロードを使用して上記で書き直したJavascriptコードを簡略化したものを次に示します。

function showDiv(a) {
var temp = a.split('~'),
    divno;

for(i = 0; i < temp.length; i += 1) {
    divno =  i + 1;
    jQuery('#loadArea' + divno.toString()).load('http://zocreative.com/load.php?f=' + temp[i]);
}

ここで重要なのは、非同期応答を自分で追跡することなく、指定されたdivにURLをロードするようにjQueryに要求していることです。jQuery.loadメソッドには、完了に応答できるオプションがいくつかあるので、ドキュメントを読んでください。

于 2013-03-12T19:27:04.103 に答える