я делаю простой потребитель веб-службы REST, используя HTML и javascript. вот код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script language="javascript">
var xmlhttp;
function getdetails() {
var empno = document.getElementById("empno");
var url = "http://localhost:8080/TestWS1/rest/hello/" + empno.value;
xmlhttp = new XMLHttpRequest(); //@slaks: i put it here
xmlhttp.open('GET',url,true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {
var empname = document.getElementById("empname");
var age = document.getElementById("age");
if (xmlhttp.readyState == 4) {
//alert(xmlhttp.status);
if ( xmlhttp.status == 200) {
var det = eval( "(" + xmlhttp.responseText + ")");
if (det.age > 0 ) {
empname.value = det.name;
age.value = det.age;
}
else {
empname.value = "";
age.value ="";
alert("Invalid Employee ID");
}
}
else
alert("Error ->" + xmlhttp.responseText);
}
}
}
</script>
</head>
<body>
<h1>Call Employee Service </h1>
<table>
<tr>
<td>Enter Employee ID : </td>
<td><input type="text" id="empno" size="10"/> <input type="button" value="Get Details" onclick="getdetails()"/>
</tr>
<tr>
<td>Enter Name : </td>
<td><input type="text" readonly="true" id="empname" size="20"/> </td>
</tr>
<tr>
<td>Employee Age : </td>
<td><input type="text" readonly="true" id="age" size="10"/> </td>
</tr>
</table>
</body>
</html>
этот код отображает имя и возраст сотрудника только из веб-службы REST в текстовом поле HTML при нажатии кнопки getDetail. параметр - номер сотрудника (empNo).
Основная проблема в том, почему этот код работает только один раз?
например, если я поместил 1 в текстовое поле empNo и нажал кнопку getDetail, только в первый раз, он будет отображать имя и возраст сотрудника на основе номера сотрудника, который был введен ранее. но для второго или третьего я нажимаю кнопку getDetail, она больше не работает. Я пытался дать предупреждение, чтобы помочь мне отладить этот код, но в результате xmlhttp.onreadystatechange = function () работает только один раз при первом нажатии кнопки getDetail.
кто-нибудь знает, как решить эту проблему ?? действительно застрял здесь .. большое спасибо за помощь ..
К вашему сведению: вот мой код веб-службы:
package com.webservices.TestWS1;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
//@Path("/hello")
@Path("/hello/{empno}")
public class Hello {
@GET // this method process GET request from client
@Produces("application/json") // sends JSON
public String getJson( @PathParam("empno") int empno) { // empno represents the empno sent from client
switch(empno) {
case 1 :
return "{'name':'George Koch', 'age':58}";
case 2:
return "{'name':'Peter Norton', 'age':50}";
default:
return "{'name':'unknown', 'age':-1}";
} // end of switch
} // end of
}