get请求报404 NOT FOUND问题的原因及解决。
在一次学习中,实现类目选择展示规格参数时,编码完成自测发现没有效果。经排查原因,发现js中的请求URL与程序URL不一致,具体如下:@Controller@RequestMapping("/item/param")public class ItemParamController {@Autowiredprivate ItemParamService itemParam...
·
在一次学习中,实现类目选择展示规格参数时,编码完成自测发现没有效果。经排查原因,发现js中的请求URL与程序URL不一致,具体如下:
@Controller
@RequestMapping("/item/param")
public class ItemParamController {
@Autowired
private ItemParamService itemParamService;
@RequestMapping("/query/itemcatid/{cid}")
@ResponseBody
public TaotaoResult getItemParamByCid(@PathVariable long cid) {
TaotaoResult result = itemParamService.getItemParamByCid(cid);
return result;
}
请求的URL为:/item/param/query/itemcatid。而实际发送请求的js中是这样描述:
changeItemParam : function(node,formId){
$.getJSON("/item/param/cid/" + node.id,function(data){
if(data.status == 200 && data.data){
$("#"+formId+" .params").show();
var paramData = JSON.parse(data.data.paramData);
var html = "<ul>";
for(var i in paramData){
var pd = paramData[i];
html+="<li><table>";
html+="<tr><td colspan=\"2\" class=\"group\">"+pd.group+"</td></tr>";
for(var j in pd.params){
var ps = pd.params[j];
html+="<tr><td class=\"param\"><span>"+ps+"</span>: </td><td><input autocomplete=\"off\" type=\"text\"/></td></tr>";
}
html+="</li></table>";
}
html+= "</ul>";
$("#"+formId+" .params td").eq(1).html(html);
}else{
$("#"+formId+" .params").hide();
$("#"+formId+" .params td").eq(1).empty();
}
});
},
请求的URL为:/item/param/cid。两者不一致,因此请求响应失败,浏览器报404错误:
既然找到了问题所在,那么简单,把js请求时的地址改成与接受请求的controller一致即可,接下来就是见证奇迹的时刻了。三下五除二把js的请求URL修改,Ctrl+S,刷新页面再次请求,结果:
what the hell??
明明已经修改了,为什么不生效呢?思索一番,想起,浏览器缓存未清除,浏览器缓存了修改之前的js,因此他读的仍然是之前的js。清除缓存后再试,终于得到了想要的结果。以此提醒自己,修改了js一定要清缓存,不然又要浪费宝贵的时间在这种低级错误上!!!
更多推荐
已为社区贡献1条内容
所有评论(0)