ajax呼叫時,document.getElementById獲取不到值
阿新 • • 發佈:2019-02-15
今天寫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;