博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AJAX
阅读量:6905 次
发布时间:2019-06-27

本文共 2885 字,大约阅读时间需要 9 分钟。

ajax = Asychronous JavaScript And XML (局部)异步的形式操作 xml,现在处理的数据格式都是json了

A. AJAX 步骤

1.浏览器2.ajax对象3.ajax.open(method, url, true);4.ajax.send();5.onreadystatechange 0 1 2 3 46.status == 200 403 503复制代码
创建对象
var xhr;if(window.XMLHttpREquest){    xhr = new XMLHttpRequest();}else{    //IE6、IE5     xhr = new ActiveXObject('Microsoft.XMLHttp');}复制代码
发送请求
xhr.open(method, url, async);xhr.send();------------------------------------------------method:'GET' 和 'POST';url: 文档在服务器的地址async:true(异步),false(同步)复制代码
1.) GET
xhr.open('GET','getList.php',true);xhr.send();复制代码
避免数据缓存,给url添加唯一的标识。
xhr.open('GET', 'getList.php?id='+Math.randow(), true)xhr.send();复制代码
请求时,发送信息
xhr.open('GET', 'getList.php?name=kiwi&age=27', true)xhr.send();复制代码
2.) POST
xhr.open('POST', 'post.php', true);xhr.send();复制代码
post类似表单信息时,需要向请求添加HTTP头
xhr.open('POST', 'post.php', true);xhr.setRequestHeader('Content-type', 'application/x--www-form-urlencoded');//setRequestHeader(头名称, 头值)xhr.send('user=kiwi&age=27');复制代码
响应
responseText: 获取字符串形式的响应数据;responseXML: 获得 XML 形式的响应数据;复制代码
onreadystatechangereadystate 状态改变的事件触发器
readystate     0-->未初始化,未调用send()方法;     1-->未读取,已调用send(),正在发送请求    2-->已读取,send()方法执行完成,接受到全部响应内容    3-->交互中,正在解析响应内容    4-->完成,响应内容解析完成复制代码
服务器返回的状态码status
404 = 文本未找到200 = 成功500 = 服务器内部错误304 = 资源未被修改...复制代码

B. 封装 AJAX 兼容性函数

function ajaxFunc(method,  url, data, callback, flag){    var xhr = null;    if(window.XMLHttpRequest){        xhr = new XMLHttpRequest()    }else{        xhr = new ActiveXObject('Microsoft.XMLHttp');    }    if(method == 'GET'){        xhr.open(method, url + '?' + data, flag);        xhr.send();    }else if(method == 'POST'){        xhr.open(method, url, flag);        xhr.setRequestHeader('Content-type', 'application/x--www-form-urlencoded');        xhr.send(data);     }    xhr.onreadystatechange = function(){        if(xhr.readyState == 4 && xhr.status == 200){        //console.log(typeof xhr.responseText)-->sting        callback(xhr.responseText)        }    }}复制代码
使用例子
    复制代码
    callback
    function showList(data){    var value = JSON.parse(data);    var str = '';    value.forEach(function(ele, index){        console.log(ele,index)        str += '
  • '+ele.title + '--' + ele.data +'
  • '; }) ul.innerHTML = str;}function showPerson(data){ console.log(data); alert(data);}复制代码
    调用
    btn.onclick = function(){  //ajaxFunc(method, url, data, callback, flag)    ajaxFunc('GET','./getList.php','', showList,true);}sub.onclick = function(e){    e.preventDefault();    var data = 'name=' + name.value +'&age=' + age.value;  //ajaxFunc(method, url, data, callback, flag)    ajaxFunc('POST', './post.php', data, showPerson, true)}复制代码
    补充状态码
    200 服务器响应正常304 该资源在上次请求之后没有任何修改(这通常用于浏览器的缓存机制,使用 GET 请求时尤其需要注意)400 无法找到请求的资源401 访问资源的权限不够403 没有权限访问资源404 需要访问的资源不存在405 需要访问的资源被禁止407 访问的资源需要代理身份验证414 请求的 URL 太长500 服务器内部错误复制代码

    转载地址:http://yzmdl.baihongyu.com/

    你可能感兴趣的文章
    MongoDB 4.0 RC 版本强势登陆
    查看>>
    混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案
    查看>>
    GOOGLE CHROME 离线下载安装地址
    查看>>
    字符串转化为整数的算法改进及优化
    查看>>
    基于TensorFlow.js的JavaScript机器学习
    查看>>
    Cisco三层vlan与路由配置
    查看>>
    htpasswd设置HTTP Basic认证 保护管理后台页面
    查看>>
    Android自定义控件之轮播图控件
    查看>>
    Lucene介绍和创建索引和搜索初步
    查看>>
    LNMP的基础上搭建wordpress
    查看>>
    祝福你的旅行
    查看>>
    Vsftp搭建(一)与PAM验证 SSL加密 登陆
    查看>>
    Ubuntu Server 18.04 配置 rsync(xinetd)
    查看>>
    ClassNotFoundException 和 NoClassDefFoundError 区别
    查看>>
    我的友情链接
    查看>>
    IOS面试题(五)
    查看>>
    特征提取概述
    查看>>
    第十周作业
    查看>>
    使用Python在Windows下调用Winrar备份文件
    查看>>
    shell学习笔记三
    查看>>