JavaScript------脚本化HTTP
以下:
1、HTTP:超文本传输协议;
2、Web应用架构:
Ajax (JSONP):请求服务器
Comet: 服务器推送;
3、XMLHttpRequest请求:
var requerst = new XMLHttpRequest(); //实例化
request.open(method,url);//指定请求;
//method:指定HTTP方法或动作;包括:GET POST DELETE HEAD OPTIONS PUT
//url:相对于文档的url或使用绝对路径URL,但是不能跨域;
//第三个是可选参数 默认true表示异步; false表示同步
request.setRequestHeader('Content-Type','application/json;charset=UTF-8');//设置请求头
request.onreadystatechange = function(){
if(request.readyState=== 4 || requset.status === 200){
request.getResponseHeader('Content-Type');//响应类型
request.responseText;//文本形式
request.responseXML;//Document形式
//dosomething 一般传递给回调函数
}
}//响应处理程序 顺序无所谓
request.send(body);//发送请求;此时才会启动网络,但是以上的顺序不能变;
//上传带有文件的表单数据:Content-Type需要使用multipart/form-data来POST提交;
//或(XHR2)使用FormData对象;多次使用append()放入请求参数。支持File和字符串,Blog等;
4、使用<script>发送请求JSONP:
一个根据指定url发送JSONP请求,然后把响应数据传递给回调函数的例子:
//在URL中添加一个名为jsonp的查询参数,用于指定请求的回调函数的名称
function getJSONP(url,callback){
//为请求创建一个唯一的回调函数名称
var cbnum = "cb"+getJSONP.counter++;
var cbname = "getJSONP."+cbnum ;
//使用jsonp作为参数名(有的是callback)
if(url.index('?') === -1)
url+='?jsonp=' + cbname;
else
url+='&jsonp=' + cbname;
//创建script元素用于发送请求
var script = document.createElement('script');
//回调函数执行
getJSONP[cbnum] = function(response){
try{
callback(response);
}
finally{
delete getJSONP[cbnum]; //删除函数
script.parentNode.removeChild(script);//移除元素;
}
}
script.src = url; //立即请求;
document.body.appendChlid(script); //添加到文档
}
getJSONP.counter = 0;
一个通用的例子:
var ax = function(url,method,async,data,contentType,successfn,errorfn){
data = (data==null || data=="" || typeof(data)=="undefined")? {"date": new Date().getTime()} : data;
async = (async==null || async=="" || typeof(async)=="undefined")? true : async;
method = (method==null || method=="" || typeof(method)=="undefined")? 'GET' : method;
var request = new XMLHttpRequest();
request.open(method,url,async);
if(contentType==null || contentType=="" || typeof(contentType)=="undefined"){
//do noting 浏览器会根据参数数据自动设置
}else{
//"application/json;charset=utf-8"
requst.setRequestHeader("Content-Type",contentType);
}
//响应:
request.onreadystatechange = function(){
if(request.readyState === 4 ){
//响应完成
//获取响应类型,服务器端给的
var type = request.getResponseHeader("Content-Type");
var resp = requset.responseText;
if(type.indexOf('xml') !==-1 && requset.responseXML){
resp = requset.responseXML;
}else if(type.indexOf('json') !==-1 ){
resp = JSON.parse(resp);
}else{
//text类型 返回
}
if(request.status === 200){
//而且成功了
successfn(resp);
}else if(request.status > 399){
//但是有错误
errorfn(resp);
}
}
}
//request.overrideMimeType("application/json;charset=utf-8"); //强制响应类型为json
if(contentType.indexOf('json') !==-1 || contentType.indexOf('JSON') !==-1){
request.send(JSON.stringify(data));
}else{
request.send(data);
} };
可根据实际情况改写;
5、服务端推送的Comet技术:使用EventSource对象,不成熟。。。。。。
JavaScript------脚本化HTTP的更多相关文章
- JavaScript权威设计--JavaScript脚本化文档Document与CSS(简要学习笔记十五)
1.Document与Element和TEXT是Node的子类. Document:树形的根部节点 Element:HTML元素的节点 TEXT:文本节点 >>HtmlElement与 ...
- javascript脚本化文档
1.getElememtById /** * 获取指定id的的元素数组 */ function getElements(/*ids...*/) { var elements = {}; for(var ...
- JavaScript 客户端JavaScript之脚本化HTTP(通过XMLHttpRequest)
XMLHttpRequest对象的设计目的是为了处理由普通文本或XML组成的响应:但是,一个响应也可能是另外一种类型,如果用户代理(UA)支持这种内容类型的话. 大多数浏览的客户端JavaScri ...
- JavaScript 客户端JavaScript之 脚本化浏览器窗口
1.计时器 客户端Javascript以全局函数setTimeOut().clearTimeOut().setInterval().clearInterval()提供这一功能. 前者是从运行的那一 ...
- JavaScript 客户端JavaScript之 脚本化文档
客户端JavaScript的存在把静态HTML转变为交互式的Web应用程序,脚本化Web页面的内容正是JavaScript存在的理由. 一个文档对象模型或者说DOM就是一个API,它定义了如何访问 ...
- Javascript学习8 - 脚本化文档(Document对象)
原文:Javascript学习8 - 脚本化文档(Document对象) 每个Web浏览器窗口(或帧)显示一个HTML文档,表示这个窗口的Window对象有一个document属性,它引用了一个Doc ...
- Javascript学习7 - 脚本化浏览器窗口
原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...
- JavaScript权威指南--脚本化CSS
知识要点 客户端javascript程序员对CSS感兴趣的是因为样式可以通过脚本编程.脚本化css启用了一系列有趣的视觉效果.例如:可以创建动画让文档从右侧“滑入”.创造这些效果的javascript ...
- JavaScript权威指南--脚本化文档
知识要点 脚本化web页面内容是javascript的核心目标. 第13章和14章解释了每一个web浏览器窗口.标签也和框架由一个window对象所示.每个window对象有一个document对象, ...
- 深入理解脚本化CSS系列第六篇——脚本化伪元素的6种方法
× 目录 [1]动态样式 [2]CSS类[3]setAttribute()[4]CSSRule对象添加[5]空样式覆盖[6]CSSRule对象删除 前面的话 我们可以通过计算样式来读取伪元素的样式信息 ...
随机推荐
- bootstrap无限级分类 jq拓展 之前的无限级分类的封装版~
git地址:https://github.com/zhangjiahao93/jQ.select HTML部分 <!DOCTYPE html> <html> <head ...
- js中查找相同的几种函数
function findInArr(arr,num){ for(var i=0;i<arr.length;i++){ if(arr[i]==num){ return true; } } ret ...
- React Native环境配置和简单使用
# 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...
- IOS开发基础知识--碎片14
1:ZIP文件压缩跟解压,使用ZipArchive 创建/添加一个zip包 ZipArchive* zipFile = [[ZipArchive alloc] init]; //次数得zipfilen ...
- IOS开发基础知识--碎片21
1:[UIScreen mainScreen].scale知识点 当屏幕分别为640x940时[[UIScreen mainScreen] scale]=2.0 当屏幕分别为320x480时[[UIS ...
- weblogic安装注意事项_linux
➠更多技术干货请戳:听云博客 一.安装过程:参考“weblogic安装截屏(linux)” 注意事项:安装weblogic时,需要注意以下两点: 1.首先在安装目录下创建weblogic12文件夹 如 ...
- JavaWeb结合七牛云存储搭建个人相册服务
JavaWeb结合七牛云存储搭建个人相册服务 一.引言1. 课程概述 相信很多人都知道网站一般会有很多图片,对于小型网站来说,图片放在网站服务器上不算什么,但当图片数量很大时,会造成服务器很臃肿,相应 ...
- 在Asp.Net MVC中实现计算页面执行时间及简单流量统计
引用www.rsion.com.dll进您的asp.net MVC项目本人不才,源代码中有详细说明,查看demo修改HomeController public class HomeController ...
- MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems
早晨宁波那边的IT人员打电话告知数据库无法访问了.其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情 ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...