关于ajax中执行 window.location.href不跳转问题

jsp页面代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
	String path = request.getContextPath();//获取项目名
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path;
%>






用户登录

















解决方案1:
将window.location.href 改为以下方式
document.forms[0].action = “…/xx.jsp";
document.forms[0].submit();
原因分析
async为 false时,即异步,并且按钮btnLogin的type为submit时,window.location.href 失效

解决方案2
把你的 type=“submit” 换成type=“button”
原因分析
ajax+submit+同步----就是你用ajax请求服务器,而且用的是同步的方式,并且你是通过点击了type类型为submit的按钮来触发这个ajax。

这个时候,首先你点击了submit,它会提交表单,但是由于你用了ajax的同步操作,submit的提交被阻塞,ajax先执行,这个时候,如果你在ajax的回调函数(如:success)中写了document.location.href=‘xxx.html’,它是执行了,的确是去执行了跳转的,于是ajax完成了,那接下来就要把刚才的submit提交的请求完成。于是呢又要从xxx.html跳回到刚才那个页面(无论你submit有没有提交具体的数据,总之提交了之后如果后台没有执行跳转/重定向,它就要回到原来的页面。)

即:ajax就是如你所想那样执行了,也从A页面跳到了B页面,但是由于submit这种类型的特殊性,又让B页面跳回了A页面,由于这个ajax执行完再执行submit请求的过程处理的很快,你会感到好像没有效果,但是你仔细观察,会发现这个过程页面会刷新的,其实就是B页面跳回到A页面。

你可能感兴趣的:(ajax)