2013-02-08 33 views
1

刚刚在PHP中初学者,我想调用使用AJAX的php方法。我尝试了所有的事情,但不知道错误是什么。没有得到任何对象xmlhttp的响应。xmlhttp.open(url)和使用AJAX调用php函数不工作?

继承人我的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文件是 “项目名称/ JavaScript的/的script.js” 和我的PHP文件是 “项目名称/代码/ GetItemsInDD.class.php” 目录。

+0

使用JavaScript像jQuery库将让您的生活轻松了许多 –

+0

什么是你在Firebug或Chrome的JavaScript控制台所得到的是错误 – Satya

+0

很肯定你必须绑定'.onreadystatechange' *打电话之前'.open',但我不是100%确定 –

回答

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的和状态的东西

的jQuery遵循面向对象的方法来声明XMLHttpRequest对象,因此您不必担心为创建多个AJAX请求而创建多个对象。

+0

我刚刚对jquery的基本理解任何一个例子,它是完整的例子。 – Mayur

+0

@Mayur例如?上面的代码展示了如何在JQuery中创建AJAX请求以及如何使用响应。 –

+0

@Mayur当然它是完整的,除了如何在页面中包含JQuery。我也补充说,你还期望什么? –

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:可能是运行在旧版本的IE浏览器,在使用的ActiveXObject的代码。

更改2:如果readyState更改(因为您已将其写入IF块中),则不应调用open()方法,只有在open()方法初始化ajax调用后,readyState才会更改,然后发送通过send()方法。

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(); 
      }