如何通过点击一个页面的链接刷新另一个页面,而不是再次打开该页面刷新 是这样的,我在实现一个购物车的功能,当点击添加到购物车时,如果购物车页面已经打开,则只刷新该页面,而不是打开新的购物车页面(这样会形成多个页面,且数据也不一致!),就像当当网那样的功能,通过一个页面刷新购物车页面,我在网上看到说是用js写,用到这样的一个方法:window.opener.reload();具体不是很清楚,是不是还要判断购物车页面是否打开,那又该如何判断呢?盼各位解答下,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你完全可以在servlet端实现你想实现的逻辑:你可以先判断购物车是否打开,没有正常打开一个页面,要是已经在购物车页面则添加完物品了,还跳回原来页面:代码-->>String ref = request.getHeader("referer");response.sendRedirect(ref); 不是很明白楼主什么意思,window.opener.reload()的意思就是打开这个页面的前一个页面重新加载,也就是刷新。不知道我描述的是否清楚。 没那么复杂。用target属性就好了,别的(只打开一个窗口)交给浏览器控制用链接的话,这样<a href="xxx" target="blank">go</a>用form提交的话,这样<form action="xxx" method="xxx" target="blank"> 不是的,一般的普通游客也可以添加商品到购物车,我说的是像当当网那样的,添加商品至购物车,购物车页面已打开,则刷新该购物车页面,而不是再次打开一个新的购物车页面,我用的是session对象存储的购物车数据,点击添加商品的链接是先提交的一个处理添加商品购物车的servlet,然后由servlet控制跳转到购物车页面,但是每次添加一个新的商品,就要打开一个新的购物车页面,这样就形成了很多的购物车页面,而且显示的数据也不一致(但刷新后数据是一致的),而我想要的结果是指打开一个购物车页面,购物车页面没有打开就打开,如果已打开就刷新该购物车页面 我也想到用target属性,可是在服务器端如何使用?因为我是这样处理的:点击添加商品的链接是先提交的一个处理添加商品购物车的servlet,然后由servlet控制跳转到购物车页面,但是每次添加一个新的商品,就要打开一个新的购物车页面,这样就形成了很多的购物车页面,而且显示的数据也不一致(但刷新后数据是一致的),而我想要的结果是指打开一个购物车页面,购物车页面没有打开就打开,如果已打开就刷新该购物车页面 这是点击添加至购物车的链接:<a target="_blank" href="AddBookItem?id=<%=book.getBookID() %>" >购买</a> 这是我的处理添加购物车servlet代码:public class AddBookItem extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;GB2312"); String isbn = new String(request.getParameter("id").trim().getBytes(), "GB2312"); HttpSession session = request.getSession(); // 非法请求,如果根据isbn没有查询到该书籍,则可能为非法请求 BookInfoDao bookDaoImpl = DAOFactory.getBookInfoDaoInstance(); BookInfo book; try { book = bookDaoImpl.queryByISBN(isbn); if (book.getBookID() == null) { String msg = "非法请求!"; session.setAttribute("msg", msg); this.getServletContext().getRequestDispatcher("/error.jsp").forward(request, response); } else { // 标杆值,看是购物车中是否已存在该书籍 boolean flag = false; Vector<CartItem> cart = (Vector<CartItem>) session.getAttribute("cart"); CartItem item; // 如果获得的cart为空,创建一个新的cart对象 if (cart == null) { // 实例化一个新的CartItem对象 item = new CartItem(); cart = new Vector<CartItem>(); item.setBookId(book.getBookID()); item.setBookname(book.getBookname()); item.setPic(book.getPic()); item.setPrice(book.getNowprice()); item.setNum(1); item.setSumprice(); cart.add(item); } else { // 遍历cart,加入购物车的书籍是否已存在 for (int i = 0; i < cart.size(); i++) { // 如果请求的书籍重复,让其购买数量+1 if (cart.elementAt(i).getBookId().equals(isbn)) { cart.elementAt(i).setNum( cart.elementAt(i).getNum() + 1); cart.elementAt(i).setSumprice(); flag = true; break; } } if (flag == false) { // 购物车中不存在该书籍,实例化一个新的CartItem对象 item = new CartItem(); item.setBookId(book.getBookID()); item.setBookname(book.getBookname()); item.setPic(book.getPic()); item.setPrice(book.getNowprice()); item.setNum(1); item.setSumprice(); cart.add(item); } } session.setAttribute("cart", cart); response.sendRedirect("cart_list.jsp"); //this.getServletContext().getRequestDispatcher("/cart_list.jsp").forward(request, response); } } catch (Exception e) { e.printStackTrace(); } } 不好意思了,用blank误导你了,让你想到_blank了。不是_blank,是个别的什么任意的名字就可以的。 var winfunction open(){if(!win) win = window.open("http://www.baidu.com");}else{ win.window.location.reload();}来判断某个页面是否已经打开,如果已经打开就刷新 刚才试了下,真的可以啊!但不知道为什么是这样的,我将target属性的值设置为:"asdf"都行,不过问题是解决了,但不知道这是什么原因?盼能进一步解答! 11楼正解,谢谢啦! 指定target的,浏览器会找这个target(标签页),存在则不新开。就是你要的。看html书的时候细心点就知道了。^-^ 如果判断的那个页面没有打开,就自动跳转到那个页面,怎么改代码?这代码是放在<script></script>中的吗???我只需要普通的HTML代码实验.请高手们指示. jsp怎么显示硬件信息,像CPU、内存、硬盘的使用率。。 源码 java 使用XStream把对象转换为XML问题?? 怎么设计项目? lucene索引文件遇到内存问题! 新手求助各位老大。QQ浮动客服系统中onmouseover的问题。 关于java,sql问题,急啊! 将zip或者jar文件解压缩后,文件名或者路径名出现的乱码问题 请教 如何在 Struts 中使用 下载 ?会做的高手指点一下.最好有代码说明一下..谢谢 百分求解,在线等待。 同时提交两个表单时如何获取其中一个表单的所有元素值? 如何使用表格显示一周的时间 JSTL for each 输出list 前台表格合并的问题
你可以先判断购物车是否打开,没有正常打开一个页面,要是已经在购物车页面则添加完物品了,还跳回原来页面:代码-->>
String ref = request.getHeader("referer");
response.sendRedirect(ref);
用target属性就好了,别的(只打开一个窗口)交给浏览器控制
用链接的话,这样
<a href="xxx" target="blank">go</a>
用form提交的话,这样
<form action="xxx" method="xxx" target="blank">
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;GB2312"); String isbn = new String(request.getParameter("id").trim().getBytes(),
"GB2312");
HttpSession session = request.getSession(); // 非法请求,如果根据isbn没有查询到该书籍,则可能为非法请求
BookInfoDao bookDaoImpl = DAOFactory.getBookInfoDaoInstance();
BookInfo book;
try {
book = bookDaoImpl.queryByISBN(isbn);
if (book.getBookID() == null) {
String msg = "非法请求!";
session.setAttribute("msg", msg);
this.getServletContext().getRequestDispatcher("/error.jsp").forward(request, response);
} else {
// 标杆值,看是购物车中是否已存在该书籍
boolean flag = false;
Vector<CartItem> cart = (Vector<CartItem>) session.getAttribute("cart");
CartItem item;
// 如果获得的cart为空,创建一个新的cart对象
if (cart == null) {
// 实例化一个新的CartItem对象
item = new CartItem();
cart = new Vector<CartItem>();
item.setBookId(book.getBookID());
item.setBookname(book.getBookname());
item.setPic(book.getPic());
item.setPrice(book.getNowprice());
item.setNum(1);
item.setSumprice();
cart.add(item);
} else {
// 遍历cart,加入购物车的书籍是否已存在
for (int i = 0; i < cart.size(); i++) {
// 如果请求的书籍重复,让其购买数量+1
if (cart.elementAt(i).getBookId().equals(isbn)) {
cart.elementAt(i).setNum(
cart.elementAt(i).getNum() + 1);
cart.elementAt(i).setSumprice();
flag = true;
break;
}
}
if (flag == false) {
// 购物车中不存在该书籍,实例化一个新的CartItem对象
item = new CartItem();
item.setBookId(book.getBookID());
item.setBookname(book.getBookname());
item.setPic(book.getPic());
item.setPrice(book.getNowprice());
item.setNum(1);
item.setSumprice();
cart.add(item);
}
}
session.setAttribute("cart", cart);
response.sendRedirect("cart_list.jsp");
//this.getServletContext().getRequestDispatcher("/cart_list.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
不是_blank,是个别的什么任意的名字就可以的。
function open(){
if(!win)
win = window.open("http://www.baidu.com");
}else{
win.window.location.reload();
}
来判断某个页面是否已经打开,如果已经打开就刷新
11楼正解,谢谢啦!