【问题标题】:AJAX call returning 404 error due to incorrect content type由于内容类型不正确,AJAX 调用返回 404 错误
【发布时间】:2016-02-05 21:06:29
【问题描述】:

AJAX 调用返回:

HTTP 状态 404 - /mycustomproject/en/WEB-INF/views/desktop/register/region.jsp

顺便说一下,这是我用来进行 Ajax 调用的同一个 URL。

$( "#address\\.country_del" ).change(function() {
      alert( "Handler for .change() called." );
      $.ajax({
          url: '/register/region',
          data: 
          {
              country: $("#address\\.country_del").val()
          },

          type: "POST",
      }).done(function (data){});
    });

控制器:

@RequestMapping(method = RequestMethod.POST, value = "/region")
public List<RegionData> getRegion(@RequestParam(value = "country") final String country)
{
    final String isocode = country;
    final List<RegionData> regions = i18NFacade.getRegionsForCountryIso(isocode);
    return regions;
}

我在浏览器上看到的请求和响应:
我认为问题出在响应的内容类型上?!

【问题讨论】:

  • 看起来你缺少 url 中的上下文根
  • 它的 method:"post" 不是 type:"post"
  • 你的网址应该是 url:'/contextroot/register/region'
  • 如果你可以点击控制器,那么你怎么会得到 404?如果是这种情况,那么您的控制器或过滤器应该有规则在特定条件下以 404 响应
  • 请尝试从您的 url 中删除 /region/ 或添加 /register 以在您的控制器中请求映射

标签: javascript jquery ajax dom


【解决方案1】:

这里的问题是您的视图解析器,因为您可以看到控制器类的响应已解析为 jsp

HTTP 状态 404 - /mycustomproject/en/WEB-INF/views/desktop/register/region.jsp

所以你需要让你的控制器中的方法知道它需要返回一个 JSON

您可以通过 @ResponseBody 对方法进行注释

@ResponseBody,它的作用是将对象作为主体返回,格式在produces="application/json"中指定。

@RequestMapping(method = RequestMethod.POST, value = "/region" ,produces="application/json") 
@ResponseBody
public List<RegionData> getRegion(@RequestParam(value = "country") final String country)
  {
    final String isocode = country;
    final List<RegionData> regions = i18NFacade.getRegionsForCountryIso(isocode);
    return regions;
}

【讨论】:

  • 现在我能够获得正确的 AJAX 调用,但是如何检索这些数据并将其显示在我的 JSP 中?我有一个包含 items="${regions}" 的下拉菜单
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 2021-06-16
  • 1970-01-01
  • 2021-04-15
  • 2011-08-11
  • 2022-01-10
  • 2014-12-19
  • 2015-11-27
相关资源
最近更新 更多