使用jQuery

时间:2016-11-24 19:25:06

标签: java jquery rest java-ee post

作为Java EE和RESTful开发的新来者,我今天有一个问题。首先让我开始添加我的代码。

HTML和jQuery部分:

<form id="frmEmail" action="myurl/">
    <h2>Main page</h2>
    <br>
    <output>Email Address:</output>
    <input type="email" 
           id="email" 
           placeholder="Email Address" 
           name="emailAddress" required autofocus/>
    <br>
    <input type="submit" 
           name="Submit"
           id="btnSub"/>
    <br>
    <br>
    <output id="output"></output>
</form>

<script>
    $(document).ready(function () {
        $("form").submit(function (e) {
            e.preventDefault(e);
            $("#btnSub").val("Loading...");
            $("#btnSub").prop("disabled", true);
            var email = $('#email').val();
            load(email);
        });
    });

    function load(email) {
        $.post("myurl/" + email, function (data) {
        document.getElementById("output").innerHTML = data.message;
        $("#btnSub").val("Submit");
        $("#btnSub").prop("disabled", false);
            });
        };
</script>

我的Java课程:

@Path("mypath")
public class main {

    @POST
    @Path("{address}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response message(@PathParam("address") String address) {
        emailVerifier verify = new emailVerifier(); // Class that tests an email address
        String status = verify.verifyAddress(address);

        outputResponse response = new outputResponse(); // Just a class with a private String and accessor and mutator methods

        response.setMessage(status);

        if ("Bad Request".equals(status)) {
           return Response.status(Response.Status.BAD_REQUEST).entity(response).build();
        } else {
           return Response.ok().entity(response).build();
        }
    }
}

话虽如此,我的代码运行良好,只要我的HTML代码不是400或以上我没有问题,但因为我使用e.preventDefault(e)我的代码运行到无限循环,如果我可以描述它就像发送状态BAD_REQUEST一样。

无论如何要解决这个问题还是有解决方法?此外,如果您对我当前的代码有任何其他提示或改进,我将非常感谢作为一种直观的方式让我了解更多。

感谢您的帮助,非常感谢。

编辑:我的表单也有method =“POST”

1 个答案:

答案 0 :(得分:1)

如果问题出在e.preventDefault,您可以尝试通过点击普通按钮而不是输入类型=提交字段来提交帖子。

更改

<input type="submit" 
       name="Submit"
       id="btnSub"/>

<input type="button" 
       value="Submit"
       id="btnSub"/>

 $("form").submit(function (e) {
          e.preventDefault(e);

$("#btnSub").click(function () {