繁体   English   中英

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

[英]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"

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

禁用firefox同源策略

在Chrome中停用相同的来源政策

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM