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

标签 java javascript jquery ajax 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>

下面是我发布到我的网络服务的 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?

最佳答案

在您的代码中,我发现了一个错误,应该会阻止它正常工作。 在客户端,你对 jQuery 说预期的类型是 JSON,但服务器生成一个字符串,在你的例子中是一个 URL,它不是 JSON。 因此 jQuery 在尝试解析接收到的数据时失败,因为它不是 JSON 数据。这个错误应该触发 jQuery 错误 block 。

在客户端应用这个改变:

dataType:"text"

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

Disable firefox same origin policy

Disable same origin policy in Chrome

关于java - 如何从 Java Rest Web 服务返回 ajax 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436018/

相关文章:

jquery - 使用 jquery/ajax 将数据插入到数据库中,我没有收到 ant 错误,但是值没有插入到数据库中

java - Spring Boot应用程序即服务linux

javascript - (循环中的图像)大量图像并且想要显示如果图像确实存在则显示图像否则删除/隐藏图像节点

java - 如何使用删除向导处理 JSON 负载?

javascript - 从 Google Feed API 同时绘制多个 Fe​​ed

javascript - 如何访问 Protractor 测试的 chromedriver 日志

javascript - 检测 jquery/javascript 移动方向

php - 表单提交时禁用提交按钮

java - 将字符数组转换为 Java 中的数字数组

java - Hibernate c3p0配置没有影响