douye2488
2013-02-08 05:39
浏览 152

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

Just beginner in php, I want to call php method using AJAX. I tried every thing but don't know what error is. Not getting any response from object xmlhttp.

Heres my java script code :

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

My js file is on "projectname/javascript/script.js" and my php file is in "projectname/code/GetItemsInDD.class.php" dir.

图片转代码服务由CSDN问答提供 功能建议

在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);  ** //此语句是否正确** 
 
 xmlhttp.onreadystatechange = function(){
 if if(xmlhttp.readyState == 4&& xmlhttp.status == 200)** // conditin为false  ,** 
 {
 document.getElementById(“ddItems”)。innerHTML = xmlhttp.responseText;  
} 
} 
 xmlhttp.send(); 
} 
} 
   
 
 

我的js文件位于“projectname / javascript / script.js “我的php文件位于”projectname / code / GetItemsInDD.class.php“dir。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • douyanqu9722 2013-02-08 05:42
    已采纳

    Why don't you use jQuery for making AJAX requests? Its as simple as this, include jQuery in your page

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

    and JS code,

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

    This way, you don't need to check for the readyState and status thing

    jQuery follows object oriented approach for declaring XMLHttpRequest objects, so you won't have to worry about creating multiple objects for making more than one AJAX requests.

    已采纳该答案
    打赏 评论
  • dsriya5471 2013-02-08 06:34

    I have made 2 desired changes to your code, try running it now. Make sure the URL is correct.

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

    }

    Change 1 : You may be running the code in an older version of IE, where ActiveXObject is used.

    Change 2 : The open() method should not be called if the readyState changes ( as you have written it within the IF block), readyState changes only after the ajax call is initialized by the open() method and then send by the send() method.

    打赏 评论
  • duannai5858 2013-02-08 11:15
         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();
              }
    
    打赏 评论

相关推荐 更多相似问题