xmlhttp.open(url)和使用AJAX调用php函数不起作用?

时间:2013-02-08 05:39:22

标签: php javascript ajax

刚开始使用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”目录中。

3 个答案:

答案 0 :(得分: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请求。

答案 1 :(得分: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();
          }

答案 2 :(得分:1)

我对您的代码进行了2次所需的更改,现在尝试运行它。确保网址正确无误。

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仅在open()方法初始化ajax调用后更改,然后通过send()方法。