当前位置: 首页 > 知识库问答 >
问题:

使用AJAX调用Micronaut服务失败

龚德本
2023-03-14

我有一个Micronaut服务,它是使用jQuery中实现的AJAX调用从客户端调用的。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!");
   }
}

调用micronaut服务的Javascript如下:

  $.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的控制器处理程序中发现了一个bug,还是在客户机或服务器代码中丢失了什么?有什么方法让这个AJAX调用工作吗?

更新:根据James在以下答案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失败html" target="_blank">消息。

因为我之前已经在Micronaut中创建并成功使用了其他Get服务,所以我使用不同的页面对这一个执行了测试。基本上,我没有使用ajax调用来调用服务,而是在HTML文件中使用了以下一行:

window.location.href = '/ajaxcaller/printit';

调用此命令会生成一个新页面,该页面显示服务返回的字符串(当然,这是预期的行为)。不会生成415错误--即使我删除了@Consumes注释。

显然,Micronaut服务处理AJAX调用与常规页面调用不同。AJAX端是否有我遗漏的设置,或者Micronaut中是否存在阻止成功调用AJAX的bug?

共有1个答案

巫马承德
2023-03-14

如错误所示,您发送的介质类型不受支持。

@production(Mediatype.text_plain)告诉Micronaut将生成什么内容类型。您还没有指定关于可以消费的内容类型的任何内容,因此它默认为application/json

添加@consumes(“application/text”)将告诉Micronaut您将要使用的内容类型,这是基于您提供的ajax调用的。

 类似资料:
  • 问题内容: 我对phonegap比较陌生,最近我在Windows apache服务器上使用自签名证书设置了HTTPS / SSL,并尝试发出HTTPS ajax发布请求。在浏览器中运行时,该请求工作正常,但在phonegap中运行时失败。我尝试将android:debuggable设置为false,但这不能解决问题。我也做了一些研究,似乎phonegap确实支持HTTPS ajax请求,所以我对请

  • 服务调用失败 KernalEvent::SERVICE_FAIL事件 在框架层,调用servcie时,会抛出KernalEvent::SERVICE_FAIL事件,你可以监听该事件,做数据上报处理,请以异步方式上报 配置config/lister.php中的事件监听器 示例 <?php namespace src\Web\Listeners; class ServiceFailListener e

  • 问题内容: 好的,所以我创建了一个测试项目,只是为了验证jQuery AJAX是否可以与asp.net服务一起使用,并且没有问题。我使用了在VS Studio中创建的默认HelloWorld服务。我通过jQuery这样调用服务: 在Default.aspx中: 在TestService.asmx中 然后,我继续进行操作,并完全复制了项目中的所有内容,但它不起作用。我收到500个服务器错误。 我验证

  • 本文向大家介绍jQuery ajax调用WCF服务实例,包括了jQuery ajax调用WCF服务实例的使用技巧和注意事项,需要的朋友参考一下 恩,在由瘦客户端转换成胖浏览器端的“潮流”下,必然要使用JavaScript调用后台的各种服务。 屌丝所维护的产品通信都是使用的WCF服务,因此必然要学习这样的内容。借用jQuery强大的库,使用JavaScript访问WCF服务非常简便。同事研究了一个b

  • 问题内容: 我要尝试做的就是从服务器中搜索文件并显示图片。HTML有一个简单的搜索栏,您可以输入搜索词。JavaScript使用ajax请求来调用PHP文件,然后PHP在服务器上找到图像并将其发送回以显示。 现在发生的是该图像没有显示,并且我得到一个图标,指示一些无效的图像。Ajax调用似乎正在运行,但是我认为我发回的数据不正确。我一直在尝试搜索它,但是每个人似乎对如何执行它都有不同的看法,这有点

  • 我正在使用Vagrant部署到Ubuntu Linux,并尝试启动服务。 然后我跟踪,发现: ?tomcat8.service-lsb:启动tomcat。加载:加载(/etc/init.d/tomcat8) active:失败(结果:exit-code)自2016-03-28 09:44:17 GMT;5s前 文档:人:systemd-sysv-generator(8) 进程:884 execst