这个隐藏的功能,我们最后实现了
点击隐藏按钮,跳出确认提示框,点击确认调用jQuery中的hide函数,以类似于ajax的方式实现列表中行的隐藏,但用了跳转的方式将id
传到了Controller中,然后一层一层把status的值update了。然后Controller中有重定向,对页面进行了刷新,自动跳转到了隐藏列表。
这个流程中,其实没有用到ajax,只是用了jQuery中的hide函数实现了隐藏,然后普普通通的传递参数改变状态。为什么采用这种方式?是因为我们
这两个,我们都需要对页面进行刷新,尤其是@R_988_404@面,当然不是ajax这种局部更新网页的技术可以做到的,原因我们之前也阐述过了,
是因为,重定向时,ajax会将重定向作为一个值返回给ajax代码,而不是对整个页面做操作。
自然,ajax存在的目的就不是为了刷新页面,
这里也是一个值得反思的地方:
我们不想刷新页面达到操作,要局部更新网页,要用到ajax这种技术。
而我们要刷新网页的时候,就需要回归传统,用回刷新页面的方法。所以,并不是ajax高端就怎么样,每种技术都有各自的优劣,
技术只是工具,我们需要达到什么样的操作,就采用哪种技术,这样才是对的。
而在不需要顶端显示已隐藏条数、不需要实现自动跳转的时候,我们大可以用ajax,因为只需要hide,只需要传递参数。
既然都是传递参数,不刷新页面传递参数的ajax和需要刷新页面才能传递参数的跳转,我们当然选择前者,这里就体现出了ajax的价值。
所以最后我们的实现方式其实特别普通,就是JS+JAVA。只不过JS编程时,使用了jQuery简化了一下而已!
原先的代码如下:
JSP:
function toHide(id){ if(confirm("确认要隐藏吗?")){ $("#tr"+id).hide(); updateStatus2Hide(id); } } function toShow(id){ if(confirm("确认取消隐藏吗?")){ $("#tr"+id).hide(); updateStatus2Show(id); } }
function updateStatus2Hide(id){ $.post("/ngtradebackend/complaint_manage/updatestatus2hide.html","id="+id); } function updateStatus2Show(id){ $.post("/ngtradebackend/complaint_manage/updatestatus2show.html","id="+id); }
Controller中:
/** * 隐藏投诉 * @param request * @param response * @return * @throws NgTradeBackendException * @throws IOException */ public ModelAndView updateStatus2Hide(HttpServletRequest request,HttpServletResponse response) throws NgTradeBackendException{ Long id=webStringUtil.getLong(request,"id"); complaintManageService.updateComplaint(id,6,null,null); //点击隐藏后自动跳转到隐藏列表 return null; } /** * 取消隐藏 * @param request * @param response * @return * @throws NgTradeBackendException */ public ModelAndView updateStatus2Show(HttpServletRequest request,3,null); //点击取消隐藏后依然停留在隐藏列表 return null; }
讲到这里,我们也可以认识到:jQuery正如它的定义一样,是一个 JavaScript 函数库。所以我们才用了它的hide函数做隐藏功能,
而ajax说白了也是js编程,当然可以用jQuery这个函数库来简化编程。
简言之,jQuery这个JS函数库简化了与JS编程有关的很多东西,包括ajax!!
这样看来,jQuery真是个好东西!
原文链接:https://www.f2er.com/ajax/162789.html