Javascript 由于内容类型不正确,AJAX调用返回404错误
AJAX调用返回: HTTP状态404- /mycustomproject/en/WEB-INF/views/desktop/register/region.jsp 顺便说一句,这是我用来进行Ajax调用的同一个URLJavascript 由于内容类型不正确,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
$( "#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;
}