站内搜索:
首页 >> 前端 >> 内容
注册页面内出现登陆页面的问题解析

时间:2018/6/14 14:10:28

问题:注册页面内出现登陆页面

1.需求:用户输完用户名,失去焦点后提示用户名是否被占用。

2.思路:onblur="checkUsername()",用失去焦点事件去数据库查询

3.运行结果

3.1预期

注册页面内出现登陆页面的问题解析

3.2现实

注册页面内出现登陆页面的问题解析

控制台

注册页面内出现登陆页面的问题解析

并没有异常信息输出

4.代码

<script type="text/javascript">
	function checkUsername() {
		var username = document.getElementById("username").value;

		var xhr;
		if (window.XMLHttpRequest) {
			xhr = new XMLHttpRequest();
		} else {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
		xhr.open("POST", "${ pageContext.request.contextPath}/user/checkUsername");
		xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhr.send("username=" + username);

		xhr.onreadystatechange = function() {
			if (xhr.readyState == 4 && xhr.status == 200) {
				var msg = xhr.responseText;
				console.info(msg);// 打印到控制台
				var span = document.getElementById("msg_username");
				span.innerHTML = msg;
			}
		};
	}
</script>

5.原因

看到后台“已拦截”,想到可能是拦截器导致

虽然结果看似怪异,推测xhr.responseText把拦截器返回的视图拿到了,innerHTML到页面上被解释成html元素,

结合chome控制台执行到xhr.readyState == 4 && xhr.status == 200,说明状态正常

所以问题一定出在xhr.open("POST", "${ pageContext.request.contextPath}/user/checkUsername");附近,url路径出错了

  • 上一篇:了解vue-router原理中更新URL但不重载页面的原理之一location.hash介绍
  • 下一篇:Vue中v-if和v-show的区别和对比介绍
  • 返回顶部