1. 程式人生 > >ajax呼叫時,document.getElementById獲取不到值

ajax呼叫時,document.getElementById獲取不到值

今天寫ajax的一個小例子的時候,document.getElementById居然獲取不到值,後來找到了,對自己很是無語。
先看jsp頁面

<body>
    <script type="text/javascript">
        var req = null;
        function test() {

            var name = document.all.name.value;
            //alert(name);
            req = new XMLHttpRequest();
            //設定回撥函式
req.onreadystatechange = callBack; //初始化req元件 var url = "server.jsp?name=" +name; req.open("GET", url,"true"); req.send(null); } function callBack() { if (req.readyState == 4 && req.status == 200) { var
result = req.responseText; //document.all("myError").innerHTML=result; //$("#myError").append(result); document.getElementById("myError").innerHTML=result; } }
</script> <br> 使用者名稱: <input type="text" id="name"
name="name" onblur="test();">
<br> <div id="myError" name="myError"></div> </body>

跳轉的jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String name=request.getParameter("name");
    //out.print(name);
    if(name==null||name.trim().length()==0){
        out.println("使用者名稱不能為空");     
    }else if(name.trim().toUpperCase().equals("ADMIN")){
        out.println("使用者名稱不能使用"); 
    }else{
        out.println("OK!"); 
    }
%>

document.getElementById獲取不到資料,果斷改了ajax的程式碼。

var name = document.all.name.value;
document.all("myError").innerHTML=result;

發現可以有結果。馬上採用alert測試,換成之前的程式碼。

    //var name = document.getElementById("name").innerText;
    //var name=document.getElementById("name").innerHTML;

這時才知道錯誤了,應該是

    var name = document.getElementById("name").value;

當然,ajax返回的依然要用:

document.getElementById("myError").innerHTML=result;