У меня есть служба Micronaut, которая вызывается из клиента с помощью вызова AJAX, реализованного в JQuery.Служба Micronaut показана ниже:
@Controller("/ajaxcaller")
public class AjaxService
{
@Get("/printit")
@Produces(MediaType.TEXT_PLAIN)
public String updateData(Session theSess)
{
System.out.println("Accessing from AJAX.");
return("Successful!");
}
}
Ниже приведен Javascript, который вызывает службу micronaut:
$.ajax({
url : '/ajaxcaller/printit',
type: "GET",
contentType: 'application/text',
success: function(data, textStatus, jqXHR)
{
alert("Get successful! "+data);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("Get failed! Error: "+jqXHR.status+", "+errorThrown);
}
});
К сожалению, несмотря на то, что я говорю серверу и клиенту:для обработки простого текста вызов AJAX завершается неудачно со следующим сообщением:
Get failed! Error: 415, Unsupported Media Type
Нашел ли я ошибку в обработчиках контроллера Micronaut, или я что-то упустил в коде моего клиента или сервера?Есть ли способ заставить этот вызов AJAX работать?
ОБНОВЛЕНИЕ: следуя совету, приведенному Джеймсом в ответе 1 ниже, в код были внесены следующие изменения, как показано ниже:
@Controller("/ajaxcaller")
public class AjaxService
{
@Get("/printit")
@Consumes("application/text")
public String updateData(Session theSess)
{
System.out.println("Accessing from AJAX.");
return("Successful!");
}
}
Я все еще получаю сообщение об ошибке 415., когда пытаюсь использовать службу.
Поскольку раньше я создавал и успешно использовал другие службы Get в Micronaut, я выполнил тестирование этой службы с использованием другой страницы.По сути, вместо вызова ajax для вызова службы я использовал следующую строку в файле HTML:
window.location.href = '/ajaxcaller/printit';
При вызове этой функции создается новая страница, отображающая строку, возвращаемую службой (что было, конечно, ожидаемым поведением).Ошибки 415 не генерируются - даже если я удаляю аннотацию @Consumes.
Очевидно, что служба Micronaut обрабатывает вызов AJAX не так, как обычный вызов страницы.Есть ли на стороне AJAX параметр, который мне не хватает, или в Micronaut есть ошибка, препятствующая успешным вызовам AJAX?