首页 > 编程学习 > 07.爱芳地产项目小程序全栈项目经验(已上线)

1.请求转发找不到controller,找上一个页面的controller即可

2.redis只能优化一部分比如byid,或者查询所有数据,过多也会卡,不能随便优化
如果查询出来所有数据的话,那需要,在增删改查删除数据
解决方案: 改完数据就删除所有存在影响的数据

3.前端接口要与后台管理系统接口区分

4.写redis分页的时候用lset,发现redis的下标是从0开始的

5.页面的每个按钮都要点击,保证所有功能正常,提高效率

6.有些历史的修复过程会有bug没有修复的假象
,多加删除数据后测试
场景: 我改了代码, 然后在页面报500,其实是之前插入的数据有错误导致的(但是以前插入是之前的,现在显示出错)

7.前端怎么发送请求头XmlHttpRequest(使用验证码的时候,发现要自己携带参数得到验证码图片,后面才赋值给src,其中authsrc是临时放url的,为了不让img自己得到空的图片)

   Object.defineProperty(Image.prototype, 'authsrc', {
			    writable : true,
			    enumerable : true,
			    configurable : true
			  })
			  var img = document.getElementById('img1');
			  console.log(document);
			  console.log(img);
			  var url = img.getAttribute('authsrc');
			  console.log(url);
			  var request = new XMLHttpRequest();
			  request.open('get', url);
			 
				
			  request.onreadystatechange = e => {
			      if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
					  // var blob = this.response;
					   
					    img.src = url;
					  
					  var authorization=request.getResponseHeader('token');
					  console.log(authorization);
			          
			      }
			  };
			  request.send();
		}

8.前端拒绝拿到请求头(报错)

   Refused to get unsafe header "Authorization"    
  //需要后端设置一个允许的请求头,所需要请求头运行的名单
   response.setHeader("Access-Control-Expose-Headers","Content-Type, Allow, Authorization, TOKEN");

9.写验证码业务的时候,图片的链接只能访问一次,再次给img.src赋值的时候又访问了一次导致验证码校验失败
解决:

   1. xml来发送请求设置 request.reponse='blob';
  2.request.response是一个blob对象,然后转换成base64(就是把资源转换成链接的格式),再把img.src=base64即可
                 https://zhuanlan.zhihu.com/p/474173086  //blob和base64和url相互转换的文章
                //代码
 getImgAndHeader(){
			Object.defineProperty(Image.prototype, 'authsrc', {
			    writable : true,
			    enumerable : true,
			    configurable : true
			  })
			  var img = document.getElementById('img1');
			  console.log(document);
			  console.log(img);
			  var url = img.getAttribute('authsrc');
			  console.log(url);
			  var request = new XMLHttpRequest();
			  request.responseType = 'blob';
			  request.open('get', url);
			  
			 
				
			  request.onreadystatechange = e => {
			      if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
					  // var blob = this.response;
					  
					   var base64=this.blobToBase64(request.response)
					   console.log(base64);
					    base64.then(result => {
					   
					           img.src=result;
					   
					         });
					   
					  
					  var token=request.getResponseHeader('token');
					  console.log(token);
					  //设置验证码到本地,等待验证
					  localStorage.setItem("codeToken",token);
					  // var code=localStorage.getItem("codeToken");
					  // console.log(code);
			          
			      }
			  };
			  request.send();
			  
			  
		
			
			
		},
		//blob转base64的代码,结果需要 .then((res)=>{})
		  blobToBase64(blob) {
		      return new Promise((resolve, reject) => {
		        const fileReader = new FileReader();
		        fileReader.onload = (e) => {
		          resolve(e.target.result);
		        };
		        // readAsDataURL
		        fileReader.readAsDataURL(blob);
		        fileReader.onerror = () => {
		          reject(new Error('文件流异常'));
		        };
		      });
		  }

10.js可以封装对象直接穿给后端

   var aaa=await myReq(
	{
				url:'/system/regislatorbuyorsellorsell/add',
				data:userInfo,
				method:'POST',
	});
Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式