前端交流企鹅:724396871

今天写了一个网站登录的ajax请求,发现总是出现这个405的问题,结果在网上找了很久。都没能解决。

                    var username = $(".username").val();
			var pwd = $(".password").val();
			var param = {'Name':username,'Pwd':pwd};
   			console.log("Request param = "+JSON.stringify(param));
			$.ajax({
				type:"post",
				url:"http://localhost:1405/api/login/valid",
				dataType:'json',
				contentType:"application/json",
				data:JSON.stringify(param),
				async:false,
				success:function(res){
					alert(res);
				},
				error:function(){
					alert("登录失败!")
				}
			});

上面这个是我一开始的请求。

老司机可能一眼就看出了问题,然而我初出茅驴,木得什么经验。针对405的原因:不被允许的请求。稍微想一下,为什么不被允许,是不是我的红包没塞到位?就这样转头一想,我聚焦到了我的data上。

                                contentType:"application/json",
				data:JSON.stringify(param)

也不知道当初为什么,非要给data加上一个转字符串。这样的一个方式,转换为json字符串形式,这样会不会后台有这怎么的冲突?

之后查看了api的文档发现,后台需要传入的参数是对象。

之后情形就明了了,将contentType删除,在将data属性的类型修改成字符串

就能请求成功了。

登录成功的返回值。

备用:常见出现405错误的可能原因

1.在接口调用的方式或者参数不对的时候会出现405错误。例如接口为delete类型,参数携带在url中,错写成post类型会导致报405的错误

2.接口需求的传参为url传参,前端请求时将参数放在body中。

3.跨域问题   跨域问题是个老生常谈的问题,解决起来大多需要后台来配合解决。所以快去找你们后台商量吧!

总结:在遇到类似问题的时候,首要找到出现问题的原因,同一个问题出现的原因是不尽相同的,不可以盲从别人解决问题的办法。注意前后台的一致性,否则会花掉大量的时间做一些无用功。

更多推荐

关于Ajax登录请求的405 Method not Allowed 问题