Почему вызов ajax не отвечает на значение целочисленного типа?

#ajax #spring-mvc

#ajax #spring-mvc

Вопрос:

Это мой вызов ajax.

 $.ajax({
     type: "get",
     url: "xyz",
     success: function(res){
        alert("hello");// not coming while returning int type but coming while returning a String value.
     }
});
  

В моем контроллере,

 @RequestMapping(value="/xyz")
@ResponseBody
public Integer xyz(){
    int i = 10;
    return i;
}
  

Что здесь не так. Вместо типа int, если я возвращаю строковый тип, я могу получить данные в ajax success.

Спасибо

Комментарии:

1. когда вы отправляете тип int, каким будет значение ‘res’ при его консоли? если вы получите какой-то ответ, проверьте, каков тип ответа по свойству typeof .

2. @Prajwal Если я отправляю тип int, то функция успеха вообще не выполняется. Тогда как его утешить.

3. Ответ AJAX должен быть в следующем формате: XML, HTML или JSON. Целое число недопустимая форма. Я предпочитаю, чтобы вы использовали JSON, видя требование. Надеюсь, это поможет

4. @Prajwal Тогда, как он принимает строковые данные, строковые данные поступают в форме XML, HTML или JSON.

5. Строковые данные обрабатываются как обычный текст, который является одним из используемых типов контента

Ответ №1:

Во-первых, вы должны указать полный HTTP-URL. Скажем, что-то вроде этого:

http://localhost:8080/your_webapp_name/xyz

и не только: xyz

Во-вторых, если вы хотите отправить HTTP-запрос GET на сервер, вы должны указать его в разделе метод, а не в разделе тип. Вот так:

method:"GET"

Теперь метод success в вашем Jquery Ajax всегда будет ожидать принятия текста в качестве параметра, поэтому в вашем случае res параметр следует рассматривать как текст.

Поэтому вместо этого вы можете просто:

 @RequestMapping(value="/xyz")
@ResponseBody
public String xyz(){
    return "10";
}
  

И в вашем методе успеха ajax преобразуйте строку в числовой тип.

В JavaScript у вас нет целых чисел, у вас есть строка, число, логическое значение, массивы, объекты.