【问题标题】:Firebug gives error "Ajax is not defined"Firebug 给出错误“未定义 Ajax”
【发布时间】:2011-07-22 15:23:11
【问题描述】:

我有这个 HTML 表单,它使用 AJAX 将数据传递到 php 文件。 (我这样做是为了不必离开当前页面)。 Firebug 给了我两个错误:

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>

【问题讨论】:

    标签: php ajax forms http-post


    【解决方案1】:

    document.getElementById("name") 为空

    您在任何函数之外都有var namevalue=encodeURIComponent(document.getElementById("name").value)。因此,它在解析 &lt;script&gt; 元素时运行——即在具有该 id 的元素存在于 DOM 之前。

    ajaxget 没有定义

    您有onClick="ajaxget()",但您在任何其他地方都没有提到ajaxget(例如function ajaxget() { …

    【讨论】:

      【解决方案2】:
          <input type="button" value="submit" onClick="ajaxget()" />
                                                       ^^^^^^^^^--- where is this function?
      

      您的代码中没有定义ajaxget() 函数。

      【讨论】:

      • 我没有写 AJAX 代码,以为我可以在我的项目中实现这个代码,他们显然缺少 ajaxget(),我如何以及在哪里可以在当前代码中定义这个特定的函数?我的代码来自:javascriptkit.com/dhtmltutors/ajaxgetpost.shtml
      • 滚动您自己的 ajax 处理程序是如此痛苦……只需使用 mootools 或 jquery。他们会为您处理所有繁重的工作,让您重新开始实际完成某事。
      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多