使用ajax(前端)发布一个值

时间:2019-02-18 13:41:16

标签: javascript java jquery ajax rest

我在连接前端和后端时遇到问题。我想使用jquery ajax从javascript函数(单击时)发送一个值(radio1Value)。该函数应该看起来像我写的吗?
如果是,REST在Java中应该如何看待?后端收到的这个数字是否应该在函数Get()中作为参数?

$.ajax({
    url: "someurl",
    method: "post",
    data: radio1Value

    success: function (response) {
        alert("Success!");
    }
});
@GET
@Path("/{ship}")
public int Get(){
    //check in matrix if number from radiovalue exists
}

检查后,我想将响应从后端发送到前端。

在这里提出建议后,我得到了什么

$("th").click(function(){
        event.preventDefault();
        var radio1Value; 
        var ifEnoughShips;
        radio1Value = $("input[name='stat']:checked").val(); 

        //sending radiovalue 
        $.ajax({
        url         : "localhost:8126/ship", 
        method      : "get",
        data        : radio1Value

       success: function (response) {
           alert("Success!");
           ifEnoudhShips=response;
        )};
)};
-------------------------
    //REST
public class RestTest{
   @GET
    @Path("abc/{ship}") //here I am not sure because I dont wanna use path
    public int CheckHowMany(@PathParam("ship") Integer ship){
        Checker ch1 = new Checker();
        int res=ch1.CheckNumber(ship);
        return res; //0 if number doesn't exists 1 if it does
    }
} 

2 个答案:

答案 0 :(得分:0)

我假设url : "someurl",只是一个占位符,实际上将包含正确的值。确保将请求发送到http://yourdomain.top/ship,因为ship是Java框架侦听的URL(@Path("/{ship}")

您需要设置正确的方法标题。 您在Java端点期望method : "post",的同时发送@Get。 Java框架可能不会将POST请求与GET操作匹配。

您需要接收一个参数,您正在使用的Java框架将其绑定到该参数。可能您需要这样做:

@GET
@Path("/{ship}")
public int Get(string radio1Value) {
    //check in matrix if number from radiovalue exists
}

您需要解决的是:

  • 使用正确的网址
  • 使用正确的方法(在请求和操作中均使用GET或POST)
  • 让动作接收一个参数,以便您发送的值可以获取

编辑:对于onclick部分,您需要使用jQuery将ajax请求包装到一个事件中(因为您正在使用此库)。您可以这样操作:

<button id="execute_on_click">Send request</button>

并在您的JavaScript中:

$("#execute_on_click").click(function(event) { 
    event.preventDefault();

    $.ajax({
        url: "localhost:8126/ship",
        method: "get",
        data: radio1Value

        success: function (response) {
            alert("Success!");
        }
    });
});

答案 1 :(得分:0)

您可以使用@PathParam表示法。

@GET
@Path("/{ship}")
public int Get(@PathParam("ship") Integer ship){
    //check in matrix if number from radiovalue exists
    return 1; // Return your success int
}

完成功能后,您可以将所需的任何内容返回给前端。另外,在使用ajax时,请确保通过GET方法调用后端并将参数附加在调用URL中。

$.ajax({
  url: "someurl",
  type: "get", //send it through get method
  data: radio1Value,

  success: function(response) {
    //Do Something
  },
  error: function(xhr) {
    //Do Something to handle error
  }
});