如何从Java Rest Web服务返回ajax中的值?

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)

如果您想测试代码而不用担心同源策略,您可以禁用它,请查看这些线程

禁用 Firefox 同源策略

在 Chrome 中禁用同源策略