原生ajax请求时出现xhr.status==0及POST请求无响应问题
用原生ajax请求时发现xhr.status == 0,于是找了好久,竟然发现是绑定事件的元素不是我点击的元素。参考以下资源AJAX问题之XMLHttpRequest status = 0xhr.status状态码1、If the state is UNSENT or OPENED, return 0.(如果状态是UNSENT或者OPENED,返回0)2、If the err...
用原生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()位置写颠倒了
HTTP中application/x-www-form-urlencoded字符说明
关于错误总结:
1.get和post提交到servlet是分别由get和post处理,看看是不是servlet的get方法或者post方法没有设置好
2.是不是点击事件并步对应到绑定点击事件的元素
3.是否POST顺序设置有问题,先open(),再设置消息头
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)