JavaScript中 Ajax的介绍与实现

简介: JavaScript中 Ajax的介绍与实现

1. AJAX是什么,如何使用AJAX?

ajax (异步的 javascript 和 xml) 能够刷新局部网页数据而不是重新加载整个网页。

第一步,创建 xmlhttprequest 对象,var xmlhttp =new XMLHttpRequest();

XMLHttpRequest 对象用来和服务器交换数据。

第二步,使用 xmlhttprequest 对象的 open() 和 send() 方法发送资源请求给服务器;

第三步,使用 xmlhttprequest 对象的 responseText 或 responseXML 属性获得服务器的响应;

第四步,onreadystatechange 函数,当发送请求到服务器,我们想要服务器响应执行一些功能就需要使用; onreadystatechange 函数,每次 xmlhttprequest 对象的 readyState 发生改变都会触发 onreadystatechange 函数

2. 具体实现

2.1 创建 XMLHttpRequest();
var xhr = null;
if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();//标准浏览器
} else {
    xhr = new ActiveXObject('Microsoft')//IE老版本
 }
2.2 准备发送;
    // 参数一:请求方式(get获取数据;post提交数据);
  // 参数二:请求地址
    // 参数三:同步或异步标志位,默认是true表示异步,false表示同步
  // 如果是get请求,那么请求参数必须在url中传递,encodeURI()用来对中文参数
    var param = 'username='+uname+'&password='+pw;
    xhr.open('get','./check.php?'+encodeURI(param),true);
2.3 执行发送动作;

2.3.1 get请求

xhr.send(null)

2.3.2 post请求

  xhr.setRequestHeader("content-type","application/x-www-form-url-urlencoded");//请求头
  xhr.send(param);//post请求参数在这里传递,并且不需要转码
2.4 指定回调函数;
    xhr.onreadystatechange=function(){
      if(xhr.radyState==4){
        if(xhr.status==200){
          var data=xhr.responseText;
          var info=document.getElementById('info');
          if(data=='1'){
            info.innerHTML='登录成功';
          }else if(data=='2'){
            info.innerHTML='用户名或密码错误';
        }
        }
      }
    }
  }

xhr.readyState状态值含义

  0  xhr对象初始化;
  1  执行发送动作;
  2  服务器端数据已经完全返回;
  3  数据正在解析;
  4  数据解析完成,可以使用了;

xhr.status(部分)状态值含义

200 数据响应正常;
404 没有找到资源;
500 服务器端错误;

3. jquery中 使用 jsonp,解决跨域请求

$(function(){
  $('#btn').click(function(){
    $.ajax({
      type:'get',
      url:'http://tom.com/jsonp.php',
      dataType:'jsonp',
      jsonp:'cb',//自定义参数名字(callback=abc),指的是等号前面的键,后端根据这个键获取方法名,jquery默认的参数名称是callback
      jsonpCallback:'abc',//自定义参数名字(callback=abc),指的是等号后面的值
      data:{},
      success:function(data){
        console.log(data.username)
      },
      error:function(data){
        console.log('error')
      }
    })
  })
})
相关文章
|
6月前
|
JavaScript 前端开发 容器
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
61 0
|
5天前
|
数据采集 前端开发 JavaScript
虎扑APP数据采集:JavaScript与AJAX的结合使用
虎扑APP数据采集:JavaScript与AJAX的结合使用
|
2月前
|
移动开发 前端开发 JavaScript
js之ajax |12-6
js之ajax |12-6
|
4月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第3天】前端开发中的异步基石:AJAX与Fetch。AJAX,使用XMLHttpRequest,处理跨域、回调地狱和错误处理。Fetch,基于Promise,简化请求,但需注意默认无跨域头和HTTP错误处理。两者各有优劣,理解其问题与解决策略,能提升前端应用的性能和用户体验。
140 24
|
3月前
|
JavaScript 前端开发 网络协议
|
3月前
|
JavaScript 前端开发 安全
js之AJAX
js之AJAX
32 0
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
4月前
|
XML 前端开发 JavaScript
JavaScript进阶 - AJAX请求与Fetch API
【7月更文挑战第9天】JavaScript进阶:AJAX与Fetch API对比。AJAX用于异步数据交换,XMLHttpRequest API复杂,依赖回调。Fetch API是现代、基于Promise的解决方案,简化请求处理。示例:`fetch('url').then(r => r.json()).then(data => console.log(data)).catch(err => console.error(err))`。注意点包括检查HTTP状态、错误处理、CORS、Cookie和超时。Fetch提高了异步代码的可读性,但需留意潜在问题。
100 0
|
4月前
|
前端开发 JavaScript API
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
51 0
|
5月前
|
XML 移动开发 前端开发
JS设置Ajax为同步或异步
JS设置Ajax为同步或异步
65 0