2016-11-24 118 views
0

作为Java EE和RESTful开发的新角色,我今天有一个疑问。让我开始添加我的代码到目前为止。使用jQuery通过POST发送和接收数据到java方法

的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被发回时描述它。

有无论如何解决这个问题或有工作?此外,如果您对我的当前代码有任何其他提示或改进,我将非常感谢它作为直观的方式来了解更多信息。

感谢您的任何帮助,这是非常感谢。

编辑:我的形式也有方法=“POST”

+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() {