Jon*_*lia 5 javascript java ajax jquery web-services
我有一个带有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>
Run Code Online (Sandbox Code Playgroud)
以下是我发布到我的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");
}
});
})
Run Code Online (Sandbox Code Playgroud)
以下是我的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;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我设法做的是将数据发布到我的Web服务但没有得到任何响应.我的问题是如何使用Ajax从我的Web服务访问返回的URL?
小智 0
在您的代码中,我发现一个错误,该错误应该会阻止它正常工作。在客户端,您对 jQuery 说期望的类型是 JSON,但服务器生成一个字符串,在您的例子中是一个 URL,它不是 JSON。因此,当 jQuery 尝试解析收到的数据时会失败,因为它不是 JSON 数据。这个错误应该触发 jQuery 错误块。
在客户端中应用此更改:
dataType:"text"
Run Code Online (Sandbox Code Playgroud)
如果您想测试代码而不用担心同源策略,您可以禁用它,请查看这些线程