0

私はAjaxの初心者です。このhtmlコードは、xmlhttprequestを使用してさまざまなhtmlアドレスを要求し、その内容をdivに入れることでdivの内部コンテンツを変更することを目的としています。私は何が間違っているのですか?コードは次のとおりです。

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <script type="text/javascript">
        var xmlhttp= null;
        if(window.XMLHttpRequest){
            xmlhttp = new XMLHttpRequest();
        }else{
            alert("You must be using a different browser.");
        }

        function makeRequest(serverPage,objID){

            var obj = document.getElementById(objID);
            xmlhttp.open("GET",serverPage);
            xmlhttp.onreadystatechange = function(){
                if(xmlhttp.readyState == 4 && xmlhttp.status == 100){
                    obj.innerHTML = xmlhttp.responseText;
                }
            }
            xmlhttp.send(null);
        }
    </script>
</head>
<body onload="makeRequest ('content1.html','hw')">
    <div align="center">
        <h1>My Webpage</h1>
        <a href="content1.html" onclick="makeRequest('content1.html','hw'); return false;"> Page1</a> | <a href="content2.html" onclick="makeRequest('content2.html','hw'); return false;"> Page2</a> | <a href="content3.html" onclick="makeRequest('content3.html','hw'); return false;"> Page3</a> | <a href="content4.html" onclick="makeRequest(content4.html,hw); return false;"> Page4</a>
        <div id = "hw"></div>
</body>

4

5 に答える 5

2

一般的に、これは私には問題ないように見えます。

しかし、xmlhttp.status == 100小切手は疑わしいようです。

100 は異常な HTTP ステータス コードです。通常、Web サーバーは、要求が成功すると 200 (「OK」) を返します。

status == 100チェックをに置き換えてみてくださいstatus == 200

参考までに、http ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html を参照してください。

于 2012-11-29T05:22:02.490 に答える
0

100 ではなく xmlhttp.status == 200 をテストします。

http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

于 2012-11-29T05:10:04.137 に答える
0

私はそれがすべきだと思います:

function makeRequest(serverPage,objID){
    xmlhttp.open("GET",serverPage);
    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
            document.getElementById(objID).innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}
于 2012-11-29T05:10:28.580 に答える
0

これで問題が解決するかどうかを確認するために変更xmlhttp.status == 100しますxmlhttp.status == 200

IEでページを実行しようとしている場合は、この行を追加してみてください

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
于 2012-11-29T05:08:31.580 に答える
0
function AjaxGet(url,helm)
{ 
  if (xmlhttp == null)
  {  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)
     {  if ( (xmlhttp.status==200) ||  (xmlhttp.status==304) )
          { document.getElementById(helm).innerHTML = xmlhttp.responseText; }
          else { document.getElementById(helm).innerHTML = xmlhttp.status + " " +xmlhttp.statusText; }
    }
 }

   xmlhttp.open("GET",url,true);
   xmlhttp.send();
}
于 2012-11-29T05:29:46.280 に答える