отправка одного значения с помощью ajax (внешний интерфейс) - PullRequest
0 голосов
/ 18 февраля 2019

У меня проблема с подключением внешнего интерфейса.Я хотел бы отправить одно значение (radio1Value) из функции javascript (по щелчку), используя jquery ajax.Эта функция должна выглядеть так, как я написал?
Если да, как должен выглядеть 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 голосов
/ 18 февраля 2019

Вы можете использовать обозначение @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
  }
});
0 голосов
/ 18 февраля 2019

Я предполагаю, что url : "someurl", это просто заполнитель и будет содержать правильное значение.Убедитесь, что вы отправляете запрос на http://yourdomain.top/ship, поскольку ship - это URL-адрес, который слушает ваша Java-инфраструктура (* @Path("/{ship}")

. Вам необходимо установить правильный заголовок метода. Вы отправляете method : "post",, в то время как ваша конечная точка Java ожидает @Get. Скорее всего, Java-инфраструктура не будет сопоставлять запрос POST с действием GET.

Вам необходимо получить параметр, который используемая Java-инфраструктура сможет связатьэто к. Вероятно, вам нужно сделать это:

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

Что вам нужно исправить, это:

  • Используйте правильный URL-адрес
  • Используйте правильный метод (используйте GET или POST как в запросе, так и в действии)
  • Пусть действие получит параметр, чтобы можно было получить отправляемое вами значение

Редактировать: для части onclickвам нужно обернуть ваш ajax-запрос в событие, используя jQuery (поскольку вы используете эту библиотеку). Вы делаете это так:

<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!");
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...