
今天遇到了一个很离奇的场景,使用ajax请求后台结果 后台处理成功了
页面还报了404
错误。\x0d\x0a程序员不说话,默默上代码:\x0d\x0aJS:\x0d\x0a[javascript] view plain copy \x0d\x0avar save = function(){ \x0d\x0a$.ajax({ \x0d\x0a url: urlMap.saveOrUpdateGroupInfo, \x0d\x0a type: 'post', \x0d\x0a async: false, \x0d\x0a dataType: 'json', \x0d\x0a data: $("#groupInfo").serialize() \x0d\x0a}).done(function(res) { \x0d\x0a console.log(res) \x0d\x0a if(res.success) { \x0d\x0a\x0d\x0a}else{ \x0d\x0a bootbox.alert(res.msg) \x0d\x0a\x0d\x0a} \x0d\x0a}) \x0d\x0a} \x0d\x0a后端:\x0d\x0a[java] view plain copy \x0d\x0a @RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST) \x0d\x0apublic ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate){ \x0d\x0aResponseVo result = new ResponseVo() \x0d\x0aGroupInfo info = new GroupInfo() \x0d\x0aDate now =new Date() \x0d\x0ainfo.setUpdateTime(now) \x0d\x0atry{ \x0d\x0aif(operate.equals("add")){ \x0d\x0ainfo.setParentId(Integer.parseInt(parentId)) \x0d\x0ainfo.setName(name) \x0d\x0ainfo.setCreateTime(now) \x0d\x0agroupInfoService.addGroup(info) \x0d\x0a}else if (operate.equals("edit")) { \x0d\x0ainfo.setId(Integer.parseInt(id)) \x0d\x0ainfo.setName(name) \x0d\x0ainfo.setParentId(Integer.parseInt(parentId)) \x0d\x0agroupInfoService.updateGroup(info) \x0d\x0a}else if (operate.equals("delete")) { \x0d\x0agroupInfoService.deleteGroup(Integer.parseInt(id)) \x0d\x0a} \x0d\x0aresult.setSuccess(true) \x0d\x0a}catch (Exception e){ \x0d\x0alog.error("operate group error."+ JsonUtil.toString(info), e) \x0d\x0aresult.setSuccess(false) \x0d\x0aresult.setMsg(e.getMessage()) \x0d\x0a} \x0d\x0areturn result \x0d\x0a} \x0d\x0a} \x0d\x0a挺奇怪吧?\x0d\x0a经分析是请求没有返回状态码,这是因为我用的是SpringMVC框架,前后端使用JSON传递数据,因为返回的是对象,而忘记了添加\x0d\x0a@ResponseBody\x0d\x0a注解,所以 Spring对
我的返回值进行了映射,但是映射结果又对应不到视图,所以返回了404\x0d\x0a正常后台代码:\x0d\x0a[java] view plain copy \x0d\x0a@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST) \x0d\x0a@ResponseBody \x0d\x0apublic ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate){ \x0d\x0aResponseVo result = new ResponseVo() \x0d\x0aGroupInfo info = new GroupInfo() \x0d\x0aDate now =new Date() \x0d\x0ainfo.setUpdateTime(now) \x0d\x0atry{ \x0d\x0aif(operate.equals("add")){ \x0d\x0ainfo.setParentId(Integer.parseInt(parentId)) \x0d\x0ainfo.setName(name) \x0d\x0ainfo.setCreateTime(now) \x0d\x0agroupInfoService.addGroup(info) \x0d\x0a}else if (operate.equals("edit")) { \x0d\x0ainfo.setId(Integer.parseInt(id)) \x0d\x0ainfo.setName(name) \x0d\x0ainfo.setParentId(Integer.parseInt(parentId)) \x0d\x0agroupInfoService.updateGroup(info) \x0d\x0a}else if (operate.equals("delete")) { \x0d\x0agroupInfoService.deleteGroup(Integer.parseInt(id)) \x0d\x0a} \x0d\x0aresult.setSuccess(true) \x0d\x0a}catch (Exception e){ \x0d\x0alog.error("operate group error."+ JsonUtil.toString(info), e) \x0d\x0aresult.setSuccess(false) \x0d\x0aresult.setMsg(e.getMessage()) \x0d\x0a} \x0d\x0areturn result \x0d\x0a}404 Not Found
服务器找不到请求的网页。例如,如果请求是针对服务器上不存在的网页进行的,那么,服务器通常会返回此代码。
这个与你nginx设置有关,通常是nginx设置的访问路径下没有相应的网页。!最好给出你洞伏nginx的配置文件。纳枯携我给你一个示例,是我的nginx配置:
...
server {
listen 80
server_name app.test.cc
index index.jsp index.htm index.html
root /home/app/login/jboss/webapps
....
location ~ .*\.(xml|htm|html)$
{
expires -1s
}
....
}
如上所配置,加入你直接访问app.test.cc 。那么请求会直接到你root设置的目录/home/app/login/jboss/webapps下依次找寻败埋index index.jsp index.htm index.html的页面文件,没有找到就会报404错误。
另,你可以安装firefox并安装组件firebug,打开firefox按F12,再访问你的页面。这时候,火狐会将你访问请求的每一步,失败的原因,及失败的链接都给出来。
错误代码为什么是404不是403?这有一份它的发展简史
:大部分人都或多或少的遇到过404错误的页面,这到底是怎么来的?为什么是404?不是403?这背后又能反映什么样的问题呢?近日,Wired发布了一篇文章介绍了404错误的发展历程,文章由36氪编译。
“Not Found”,这个臭名昭著的404错误通常被称为“互联网的最后一页”。这不仅是一个被人所熟知的强制性警告信息,还是一个文化现象和岁销一句妙语。关于它的负面双关语比比皆是。人们把它印在了漫画和T恤上。这个曾经只是被书呆子式幽默所接受的、可以理解的一面,已经成为了现在数字生活中的一部分。
404错误能够具有跨界的吸引力似乎是理所当然的。这是近乎普遍、与生俱来的情感:纯粹的失望,呈现出了一个未曾预料到的问题。这也提醒我们,科技,尤其是网络,是由人类创造的,因此也是不可靠的。毕竟,互联网并不是一台运转良好的机器它更像是由单向超文本构建的地球上的欢乐花园,由断链、损坏的图像文件和不完整的信息组成。
在它出现后不久,错误代码就开始享受或忍受它在其中的份额。在21世纪初,一个想法冒了出来,即404是404房间,这个房间存放有网络的第一批服务器,位于欧洲核子研究中心(位于瑞士的欧洲核研究组织),万维网发明者Tim Berners-Lee的办公室也在那里,但经常找不到他。
“唉,”Robert Cailliau写道,他和Berners-Lee都是超文本结构的先驱。当被要求对404错误发表评论时,他似乎不太乐意接受他所谓的“琐事”。Cailliau坚持认为,上述的说法是一种“废话”。
错误代码是必要的,但不是一个中心阶段的问题。Cailliau在给我的一封电子邮件中写道:“当你为一个新系统编写代码时,你不会浪费太多的时间来为你检测到错误的情况写长信息。”在当时,内存也是一个问题较长的信息是不切实际的。(“现代的极客们已经不知道用64K内存来编程是什么样子了,”他写道。)
解决方法很简单:宽雀吵指定错误类别的数值范围。这是在Cailliau的演讲中完成的,“根据程序员的突发奇想。”客户端错误出现在400范围内,使“404”成为“Not Found”的相对干脆的委托。Cailliau坚定地说:“404从来没有被连接到任何一个房间或任何物理地点。”他写道:“这完全是个神话。”
当被问及他是否有任何关于为什么这个错误如此吸引人的理论时,Cailliau写道:“我甚至没有预感到404的魅力。”坦率地说,我一点也不关心。进入404响应页面的那种创造力是毫无用处的。神话可能是由于非理性、否认证据,以及对童话故事的偏爱,而这在人类中是很常见的…这些人类特征在过去是相对无辜的,个体影响很小,信息传播缓慢。今天,由于网络的存在,这些特点在很大程度上形成了一种危险的力量。”或者,这种迷恋可能慎侍只是人类的一种表现,也可能是人类对互联网的欣赏,而人类——尤其是在互联网上——常常感到无聊。
无论如何,404都牢牢地占据了主流。现在,公司的“声音”可以免费、友好地与被挫败的用户产生共鸣(换句话说,就是一个品牌的机会)。或者,这只是一种打破“第四道墙”的方法。Tumblr采取了一种厚颜无耻的做法:“这里什么都没有……除非你在寻找这个错误页面,在这种情况下:恭喜!”你完全找到了。”皮克斯的404页面上写着:“哇,别哭了。”这只是一个404错误!”然后下面是从内到外的悲伤角色的插图。Bloomberg提供了一幅三连画,是一个男人在桌子上拍打电脑,然后不由自主地摔成碎片。后者有点奇怪——而且有点戏剧性。
评论列表(0条)