Javascript 由于内容类型不正确,AJAX调用返回404错误

Javascript 由于内容类型不正确,AJAX调用返回404错误,javascript,jquery,ajax,dom,Javascript,Jquery,Ajax,Dom,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/r

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;
}
@RequestMapping(method=RequestMethod.POST,value=“/region”)
公共列表getRegion(@RequestParam(value=“country”)最终字符串国家/地区)
{
最终字符串等位码=国家;
最终列表区域=i18NFacade.getRegionsForCountryIso(等代码);
返回区;
}
浏览器上显示的我的请求和响应:

我认为问题在于内容类型的响应

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

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

因此,您需要让控制器中的方法知道它需要返回JSON

您可以通过
@ResponseBody

@ResponseBody
,它的作用是以
products=“application/json”
中指定的格式返回对象作为主体

@RequestMapping(method=RequestMethod.POST,value=“/region”,products=“application/json”)
@应答器
公共列表getRegion(@RequestParam(value=“country”)最终字符串国家/地区)
{
最终字符串等位码=国家;
最终列表区域=i18NFacade.getRegionsForCountryIso(等代码);
返回区;
}

看起来您在url中缺少上下文根,它的
方法是:“post”
而不是
键入:“post”
您的url应该是url:“/contextroot/register/region”如果您可以点击控制器,那么您怎么会得到404?如果是这种情况,那么您的控制器或过滤器应该有规则在特定条件下用404响应。请尝试从您的url中删除/region/或在控制器中添加/注册请求映射。现在,我能够获得正确的AJAX调用,但如何检索此数据并在JSP中显示?我有一个下拉列表,其中包含items=“${regions}”
@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;
}