我是网络服务和html / javascript的新手。 我在java中编写了一个REST Web服务。它接受来自html表单的用户名,并再次将其返回到相同的html页面。我使用alert()函数调用显示。
我的网络服务代码是
@Path("/hello")
public class Hello {
@GET
@Path("hello/{username}")
@Produces(MediaType.TEXT_HTML)
public String ldap(@PathParam("username") String username)
{
return username;
}
}
我的jsp文件是first.jsp(仅粘贴选定的代码,因此没有关于html,body标签的错误)
<script type="text/javascript">
var xmlhttp;
function callservice()
{
alert("I am in javascript");
var user = document.getElementById("uid");
xmlhttp = new XMLHttpRequest();
var url = "http://localhost:8080/de.vogella.workspace.first/rest/hello/" + user.value;
xmlhttp.open('GET', url, true);
alert("after url");
xmlhttp.send(null);
alert("after send");
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert("In functn");
alert(xmlhttp.responseText);
}
}
}
</script>
<form style="margin-left:300px" id="f1" method="GET" onsubmit="callservice()" >
<fieldset style="margin: 50px">
<legend>Login</legend>
<p>
User name: <input type="text" id="uid" name="username"><br>
<p>
<input type="submit" value="Submit">
<p id="qwe"> This HTML</p>
</fieldset>
</form>
从first.jsp文件中我调用了Web服务。我做同样没有任何参数,我从Web服务返回一些硬编码值,然后它的工作原理。但我需要传递参数,因为我想验证用户。
我认为我在参数传递中做错了。
当我点击提交按钮时,我可以在浏览器中看到网址
http://xxx.xxx.xxx.x:8080/de.vogella.workspace.first/first.jsp?username=john
当我将Web服务作为独立测试时,它看起来像
http://xxx.xxx.xxx.x:8080/de.vogella.workspace.first/rest/hello
任何人都可以帮我解决一下。
谢谢。
答案 0 :(得分:0)
你的问题是javascript正在运行一个ajax调用,当完成后,表单正在提交。完全删除表单,只需一个按钮和输入框来调用您的JavaScript。如果可能的话,您还应该考虑使用jquery。
请查看此链接以了解您的问题。 How to prevent form from being submitted?
另外,调试提示使用firebug net面板来查看实际从代码生成的请求。