ITPUB论坛 » WEB 2.0技术 » 求救?這段Ajax代碼有什麽錯誤?
新一届的微软MVP评选已经开始,欢迎各位推荐!
2007-11-24 15:52 vvcolor
求救?這段Ajax代碼有什麽錯誤?

各位大虾,刚开始接触 ajax,不知道这段代码错在哪里?
请各位给看看,为什么不能触发验证函数?谢谢了

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
  <head>
    <title>Using Ajax for validation</title>

    <script type="text/javascript">

        var xmlHttp;
         function createXMLHttpRequest() {
            if (window.ActiveXObject) {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            }
        }


        function validate() {
            createXMLHttpRequest();
            var date = document.getElementById("birthDate");
            var url = "ValidationServlet?birthDate=" + escape(date.value);
            xmlHttp.open("GET", url, true);
            xmlHttp.onreadystatechange = callback;
            xmlHttp.send(null);
        }



        function callback() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    var mes =xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
                    var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.data;
                    setMessage(mes, val);
                }

            }

        }

        function setMessage(message, isValid) {
            var messageArea = document.getElementById("dateMessage");
            var fontColor = "red";
            if (isValid == "true") {
                fontColor = "green";
            }
            messageArea.innerHTML = "<font color=" + fontColor + ">"
                + message + " </font>";

        }

    </script>

  </head>

  <body>

    <h1>Ajax Validation Example</h1>

    Birth date: <input type="text" size="10" id="birthDate" onchange="validate();"/>

    <div id="dateMessage"></div>

  </body>

</html>

2007-11-24 17:52 lastwinner
<input type="text" size="10" id="birthDate" onchange="validate();"/>

要在这里里面填数据,然后离开(就是使这个input框失去焦点),才能触发
你这样做了吗?

btw:你给的片断别人无法测试的
你可以参考一下这里:
[url]http://lastwinner.itpub.net/post/7102/237711[/url]

[[i] 本帖最后由 lastwinner 于 2007-11-24 17:54 编辑 [/i]]

2007-11-26 13:38 fancychou
错误信息是什么?

2007-11-26 13:59 pandzhi
把錯誤提示貼出來看看.

2007-11-27 08:29 vvcolor
没有错误信息,就是没有反映..

2007-11-28 11:32 fancychou
你使用firefox+firebug调试,看到底从后台取到什么了

2007-12-19 11:26 ShadowKiller
如果没有反应,那么你就看下是不是你的servlet返回有问题。 看看xmlHttp.status 是不是200。 不出东西可能是这个问题

function callback() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    var mes =xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
                    var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.data;
                    setMessage(mes, val);
                }else{
                            [color=Black]alert("xmlHttp.status = "+xmlHttp.status)[/color]
                }
        }

对于xmlhttprequest, 一旦出现没有任何反应,首先应该考虑的是看服务端有没有返回,返回状态。
建议测试阶段加上else分支

2007-12-20 16:12 iooyoo
xmlHttp.open("GET", url, true);
新开一个网页,直接输入url(如果要登录先登录)看看正常不
不然就是javascript的问题了

2008-4-14 14:37 iezhyli
你可以在各个函数中加几个alert看看是不是执行了,另外最可能的错误就是servlet的返回有问题,可以照楼上说的直接在地址栏中输入网址看是否正常,servlet返回的xml格式看能否正常显示,建议先调试服务端程序,再调试js函数也可以一块调试。

2008-4-18 11:59 randoming
太长了..

2008-4-18 11:59 randoming
一段段测试啊

2008-4-21 17:14 ShadowKiller
先测试下,看xmlHttp 有没有成功的创建。

2008-4-21 17:21 ShadowKiller
var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.data;
这一句改为
var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.nodeValue;

页: [1]


Powered by ITPUB论坛