[英]How to return a value in ajax from a Java Rest Web service?
我有一个带有HTML和JQuery的Web应用程序,其中有一个登录表单。 当我单击提交按钮时,我使用ajax使用Post请求将数据发送到Web服务。 Web服务使用Java构建。
这是我的html表单:
<form id="mdxLogin" action="" method="post">
<div class="ui-content">
<p><input type="email" id="mdxEmail" name="mdxEmail" class="ui-field-contain" value="" placeholder="MDX Email" /> </p>
<p><input type="password" id="mdxPassword" name="mdxPassword" class="ui-field-contain" value="" placeholder="MDX Password" /></p>
</div>
<div class="ui-content">
<input type="submit" class="ui-field-contain" value="Login" id="sub"/>
</div>
</form>
以下是我发布到我的Web服务的Ajax代码
$("#mdxLogin").submit(function(e) {
e.preventDefault();
var mdxEmail = $("input[name=\"mdxEmail\"]").val();
var mdxPassword = $("input[name=\"mdxPassword\"]").val();
$.ajax({
type: "POST",
url:"http://localhost:8080/RestService/rest/loginService/login",
dataType:"json",
data: $("#mdxLogin").serialize(),
success: function(data, textStatus, jqXHR) {
// handle your successful response here
alert(data);
},
error: function(xhr, ajaxOptions, thrownError) {
// handle your fail response here
alert("Error");
}
});
})
以下是我的Web服务中的方法
@POST
@Path("/login")
@Produces(MediaType.TEXT_PLAIN)
public String login(@FormParam("mdxEmail") String mdxEmail, @FormParam("mdxPassword") String mdxPassword) {
System.out.println(mdxEmail);
DBStudent s = new DBStudent();
String url = null;
if (s.checkLogin(mdxEmail, mdxPassword)) {
url = s.getCalendar(mdxEmail, mdxPassword);
}
return url;
}
到目前为止,我设法做的是将数据发布到我的Web服务但没有得到任何响应。 我的问题是如何使用Ajax从我的Web服务访问返回的URL?
在你的代码中我发现了一个错误,它应该阻止它正常工作。 在客户端,你对jQuery说,期望的类型是JSON,但服务器产生一个字符串,在你的情况下是一个URL,而不是JSON。 因此,jQuery在尝试解析收到的数据时失败,因为它不是JSON数据。 这个错误应该触发jQuery错误块。
在客户端中仅应用此更改:
dataType:"text"
如果您想测试代码而不必担心同源策略,可以禁用它,查看这些线程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.