脚本化http(一)
来源:互联网 发布:淘宝海淘怎么加入 编辑:程序博客网 时间:2024/06/14 08:15
http协议概述
兼容的XMLHttpRequest写法
//为了兼容低版本的ie浏览器我们需要这样来写兼容代码if(window.XMLHttpRequest === undefined){ window.XMLHttpRequest = function(){ try{ return new ActiveObject('Msxml2.XMLHTTP.6.0'); }catch(error){ try{ return new ActiveObject('Msxml2.HTTP.3.0'); }catch(error){ throw new Error('XMLHttpRequest is not supported!'); } } }}
获取纯文本和强制同步获取
//关于http 函数的封装问题function getText(url,callback){ var request = new XMLHttpRequest(); request.open('GET',url); request.onreadystatechange = function(){ if(request.readyState ===4 && request.status ===200){ var type = request.getResponseHeader('Content-Type'); if(type.match(/^text/)){ callback(request.responseText); } } } request.send(null);}//进行强制同步function getTextNotAsyn(url){ var request = new XMLHttpRequest(); request.open('GET',url,false); request.send(null); if(request.status !== 200){ throw new Error(request.statusText)} var type = request.getResponseHeader('Content-Type'); if(!type.match(/^text/)){ throw new Error('Expected textual response got:'+type); } return request.responseText;}
封装get函数
//编写一个可以进行请求同时也能够对返回的内容进行解析function get(url,callback){ var rq = new XMLHttpRequest(); rq.open('GET',url); rq.onreadystatechange = function(){ if(rq.readyState === 4 && rq.status ===200){ var type = rq.getResponseHeader('Content-Type'); if(type.indexOf('xml') && rq.responseXML){ callback(rq.responseXML); }else if(type ==='application/json'){ callback(JSON.parse(rq.responseText)); }else{ callback(rq.responseText); } } }}
对数据进行编码
function encodeFormData(data){ if(!data) return; var pairs = []; for(var name in data){ if(!data.hasOwnProperty(name)){ continue;} if(typeof data[name] === 'function') continue; var value = data[name]; name = encodeURIComponent(name.replace('%20',"+")); value = encodeURIComponent(value.replace('%20','+')); pairs.push(name+'='+value); }}
使用表单编码数据发起一个http post请求
//使用表单编码数据发起一个http post请求function postData(url,data,callback){ var request = new XMLHttpRequest(); request.open('POST',url); request.onreadystatechange = function(event){ event = event || window.event; if(request.readyState ===4 && callback){ callback(request); } } request.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); request.send(encodeFormData(data));}
使用表单编码数据发起一个get请求
function getData(url,data,callback){ var request = new XMLHttpRequest(); request.open("GET",url+"?"+encodeFormData(data)); request.onreadystatechange = function(){ if(request.readyState ===4 && callback){ callback(request); } } request.send(null);}
使用json编码的请求发送http post 请求
function postJSON(url,data,callback){ var request = new XMLHttpRequest(); request.open("POST",url); request.onreadystatechange = function(){ if(request.readyState === 4 && callback){ callback(request); } } request.setRequestHeader('Content-Type','application/json'); request.send(JSON.stringify(data));}
待续…
0 0
- 脚本化http(一)
- 脚本化HTTP
- 前端脚本化http
- 2008-03-27[脚本化HTTP]
- 【js学习笔记-099】-------HTTP脚本化
- 脚本化HTTP——AJax
- http抓包脚本
- LR http 脚本编写
- HTTP(一)
- HTTP(一)
- javascript 脚本化的HTTP----ajax的基石
- JavaScript之cookie和客户端持久性以及脚本化HTTP
- JavaScript权威指南笔记8_脚本化HTTP
- 犀牛——第18章脚本化HTTP
- 【JS】【客户端】脚本化HTTP —— 借助<script>发送HTTP请求:JSONP
- 添加http mime类型脚本
- 管理http服务的脚本
- loadrnner 之http脚本开发
- ext2文件系统之ext2_lookup函数源代码分析
- 互联网几种初级攻击
- Java中数据存放的位置
- C++ String类的实现
- ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
- 脚本化http(一)
- Whoosh学习
- C#脚步控制角色在屏幕上旋转
- ButterKnife
- Mysql学习笔记
- C语言结构体(struct)常见使用方法
- java垃圾回收机制
- Android简单自定义Dialog样式
- TCP状态转换图