【发布时间】:2014-04-21 13:48:20
【问题描述】:
我有一个带有 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>
下面是我发布到我的网络服务的 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");
}
});
})
以下是我的网络服务中的方法
@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;
}
到目前为止,我设法将数据发布到我的网络服务,但没有得到任何响应。我的问题是如何使用 Ajax 从我的 Web 服务访问返回的 url?
【问题讨论】:
-
首先,在 Firebug(或等效)打开的情况下运行 JS 代码。它发送什么? (您可以在此处发布数据 - 发送的数据、响应 HTTP 代码、响应正文、请求和响应标头,尤其是
Accepts:。) -
基本上这会将登录详细信息发送到 Web 服务。然后web服务验证登录,根据登录web服务应该返回一个url字符串(我不知道怎么做最后一部分)
-
在进行此调用时,您在 Firebug 中看到的响应正文是什么? (通常您的代码看起来不错,可能缺少一些细节。)另外 - 您是否尝试生成另一种媒体类型?
-
到目前为止我还没有使用过 Firebug,也许我应该尝试一下。但我注意到的是,当我提交表单时,我的 ajax 中的错误块被执行。我还注意到,在我提交表单后,chrome 中的控制台给了我这个错误
XMLHttpRequest cannot load http://localhost:8080/RestService/rest/loginService/login. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. -
我刚刚尝试使用 Firebug,作为响应,我得到了整个 HTML 文档
标签: java javascript jquery ajax web-services