原生ajax请求时出现xhr.status==0及POST请求无响应问题

用原生ajax请求时发现xhr.status == 0,于是找了好久,竟然发现是绑定事件的元素不是我点击的元素。参考以下资源

AJAX问题之XMLHttpRequest status = 0

xhr.status状态码

  1、If the state is UNSENT or OPENED, return 0.(如果状态是UNSENT或者OPENED,返回0)
  2、If the error flag is set, return 0.(如果错误标签被设置,返回0)
  3、Return the HTTP status code.(返回HTTP状态码)

 

POST请求无响应

POST请求函数如下:

function post(url, data){
	var req = createXMLHTTPRequest();
	if(req){
		//post请求需要添加请求头,否则会报错
		req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                req.open("POST", url, true);
		//发送请求
		req.onreadystatechange = function(){
			//判断是否服务器响应
			if(req.readyState == 4 && req.status == 200)
				requestSuccess();
		}
		req.send(data);
	}
}

把req.setRequestHeader("Content-type","application/x-www-form-urlencoded");注释掉反而可以请求,而添加了这句就不可以,我怀疑是<a>标签不适用这种请求头,于是查了content-type的这种类型及说明:HTTP中application/x-www-form-urlencoded字符说明 还是没能解决问题。于是我仔细的对照网上的POST请求,发现应该先open,再setRequestHeader

req.open("POST", url, true);
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

 

参考:

原生js的ajax请求:最初看的,后来发现里面的POST请求头和open()位置写颠倒了

原生ajax与jQuery ajax的比较

AJAX简单使用介绍

ajax获取servlet发送的数据

原生js实现Ajax

生Ajax书写

HTTP中application/x-www-form-urlencoded字符说明

 

关于错误总结:

1.get和post提交到servlet是分别由get和post处理,看看是不是servlet的get方法或者post方法没有设置好

2.是不是点击事件并步对应到绑定点击事件的元素

3.是否POST顺序设置有问题,先open(),再设置消息头

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值