今天在做一个内容网站时,遇到一个问题,描述如下:
一个文章页面(页面a) 需要加载用户的评论内容页面(页面b) , 但是有些文章是没有评论的,也就是说页面b可能不存在,
那样在使用 jQuery的load 方法加载时就会出现 404的情况,这个可以通过 ajax 的状态码去判断是否加载成功,但是因为配置了404的错误页面
所以ajax的状态码总是成功的,即请求总是有响应(页面b或者404页面)。
问题来了, 项目部署是采用apache + tomcat 的结构, apache主要负责静态资源(html, css, image, js..) , tomcat 主要负责动态的内容
在apache 和 tomcat 都配置了 404 的页面,所以就出现了以下的情况:
页面a 通过 jQuery 的load 方法加载 页面b 时, 页面b 不存在, 结果把 404 页面加载到了 页面a , 且 404 页面会自动跳转到首页。
这可怎么办呢: 我想了以下对策:
1:JQuery请求一个 action, 通过 action去判断页面b 是否存在,并读取以流的形式输出到页面a上,发现这样的效率比较低 (pass)
2: JQuery请求一个 action, 通过 action去判断页面b 是否存在,告诉页面a , 然后再确定是否加载 页面b。 这个的话,每次都要请求两次服务器。(pass)
3: 最后思来想去,jQuery load() or ajax() 在加载页面b的时候总会返回一个页面(页面b或都404页面), 就通过 responseText.indexOf("404")>0 来判断请求到的是哪个页面,然后再确定是否将这个页面显示到页面a上。
最后采购了 第三种方案!