1

phpの初心者ですが、AJAXを使用してphpメソッドを呼び出したいと思います。私はすべてを試しましたが、エラーが何であるかわかりません。オブジェクトxmlhttpから応答がありません。

これが私のJavaスクリプトコードです:

function loadData(){
    var mID=ddItems;
    var method=2;
    var xmlhttp;
    if (window.XMLHttpRequest) {    
        xmlhttp = new XMLHttpRequest();
    }
    if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) {
        xmlhttp.open("GET", "../code/GetItemsInDD.class.php?id=" + mID + "&method=" + method, true); **// is this statement correct**

    xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200) **//conditin is false,**
        {
            document.getElementById("ddItems").innerHTML=xmlhttp.responseText; 
        }
     }
    xmlhttp.send();
    }
}

私のjsファイルは"projectname/ javascript / script.js"にあり、私のphpファイルは "projectname / code/GetItemsInDD.class.php"ディレクトリにあります。

4

3 に答える 3

4

AJAXリクエストを行うためにjQueryを使用してみませんか?これと同じくらい簡単で、ページにjQueryを含めます

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>

およびJSコード、

$.ajax({
  type: 'GET',
  url: '../code/GetItemsInDD.class.php?id=" + mID + "&method=" + method',
  success: function (data) {
     document.getElementById("ddItems").innerHTML = data; 
  }
});

このように、readyStateとstatusのことを確認する必要はありません

jQueryは、オブジェクトを宣言するためのオブジェクト指向アプローチに従うXMLHttpRequestため、複数のAJAX要求を行うために複数のオブジェクトを作成することを心配する必要はありません。

于 2013-02-08T05:42:28.327 に答える
3
     function loadData(){
           var xmlhttp;
           var mID=ddItems;
           var method=2;
              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("ddItems").innerHTML=xmlhttp.responseText;
              }
           }
           xmlhttp.open("GET", "../code/GetItemsInDD.class.php?id=" + mID + "&method=" + method, true);
          xmlhttp.send();
          }
于 2013-02-08T11:15:49.240 に答える
1

コードに2つの必要な変更を加えました。今すぐ実行してみてください。URLが正しいことを確認してください。

function loadData()
{
var mID=ddItems;

var method=2;

var xmlhttp;

if (window.XMLHttpRequest) {    
    xmlhttp = new XMLHttpRequest();
}

else    //For some versions of IE
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


xmlhttp.onreadystatechange = function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200) **//conditin is false,**
    {
        document.getElementById("ddItems").innerHTML=xmlhttp.responseText; 
    }
 }

xmlhttp.open("GET", "../code/GetItemsInDD.class.php?id=" + mID + "&method=" + method, true); **// is this statement correct**
xmlhttp.send();
}

}

変更1:ActiveXObjectが使用されている古いバージョンのIEでコードを実行している可能性があります。

変更2:readyStateが変更された場合(IFブロック内に書き込んだように)、open()メソッドを呼び出さないでください。readyStateは、ajax呼び出しがopen()メソッドによって初期化され、send( ) 方法。

于 2013-02-08T06:34:08.323 に答える