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

为什么不使用 jQuery 来发出 AJAX 请求?就这么简单,在你的页面中包含 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() 方法,仅在 open() 方法初始化 ajax 调用然后通过 send( ) 方法。

于 2013-02-08T06:34:08.323 回答