2011-07-22 2 views
-2

У меня есть эта HTML-форма, которая использует AJAX для передачи данных в файл php. (Я сделал это, поэтому мне не нужно оставлять текущую страницу). Firebug дает мне две ошибки:Firebug дает ошибку «Ajax не определен»

document.getElementById("name") is null 
ajaxget is not defined 

Я только начал использовать AJAX сегодня от отчаяния, так что я очень новой для него. Файл PHP является second.php, важной частью является то, что она принимает переменные, поэтому он может создать выход, который будет использоваться другой HTML позже, но он не должен реагировать обратно:

 <html> 
     <head> 
     </head> 

     <body> 
     <script type="text/javascript"> 
     function ajaxRequest(){ 
     var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"] //activeX versions to check for in IE 
     if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken) 
      for (var i=0; i<activexmodes.length; i++){ 
      try{ 
      return new ActiveXObject(activexmodes[i]) 
      } 
      catch(e){ 
      //suppress error 
      } 
      } 
     } 
     else if (window.XMLHttpRequest) // if Mozilla, Safari etc 
      return new XMLHttpRequest() 
     else 
      return false 
     } 
      var mygetrequest=new ajaxRequest() 
     mygetrequest.onreadystatechange=function(){ 
     if (mygetrequest.readyState==4){ 
      if (mygetrequest.status==200 || window.location.href.indexOf("http")==-1){ 
      document.getElementById("result").innerHTML=mygetrequest.responseText 
      } 
      else{ 
      alert("An error has occured making the request") 
      } 
     } 
     } 
     var namevalue=encodeURIComponent(document.getElementById("name").value) 
     var agevalue=encodeURIComponent(document.getElementById("age").value) 
     mygetrequest.open("GET", "second.php?name="+namevalue+"&age="+agevalue, true) 
     mygetrequest.send(null) 

     </script> 

     <form method="get" action=""> 
     Your name: <input type="text" id="name" name="name" size="25" /> <br /> 
     Your age: <input type="text" id="age" name="age" size="25" /> <br /> 
     <input type="button" value="submit" onClick="ajaxget()" /> 
     </form> 
     <div id="result"> </div> 

     </body> 

     </html> 

ответ

2

документ. getElementById («имя») является нулевым

У вас есть var namevalue=encodeURIComponent(document.getElementById("name").value) вне любой функции. Таким образом, он запускается, когда элемент <script> анализируется - это до того, как элемент с этим идентификатором существует в DOM.

ajaxget не определен

Вы onClick="ajaxget()" но нигде у вас есть какие-либо другие упоминания о ajaxget (например function ajaxget() { …

0
<input type="button" value="submit" onClick="ajaxget()" /> 
               ^^^^^^^^^--- where is this function? 

Вы не имеете ajaxget() функцию, определенную в вашем код

+0

Я не писал код AJAX, думал, что смогу реализовать этот код в мой проект, они, очевидно, отсутствуют ajaxget(), как и где я могу определить эту конкретную функцию в текущем коде? Я получил код от: http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml – pinky

+0

Роллинг ваших собственных обработчиков ajax - такая боль ... просто используйте mootools или jquery. они справятся со всем тяжелым грузом для вас и позволят вам вернуться к тому, чтобы что-то сделать. –

Смежные вопросы