美文网首页
3-初识Ajax

3-初识Ajax

作者: 大庆无疆 | 来源:发表于2019-05-01 23:01 被阅读0次

在ajax中,form表单就没有必要写action了
采用ajax表单元素也没有必要有name属性
提交按钮也不一定是submit了,可以是普通的button

使用Ajax四重奏

第一步、创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();//标准浏览器
var xhr = new ActiveXObject("Microsoft.XMLHTTP");//IE6

第二步、准备发送
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步(如果是同步的话不会调用第四步的回调函数,直接返回数据:xhr.responseText
xhr.open();

(1)如果是get请求那么请求参数必须在url中传递
encodeURI()用来对中文参数进行编码,防止乱码
var param = 'username='+uname+'&password='+pw;
xhr.open('get','03get.php?'+encodeURI(param),true);

(2)post请求参数通过send(第三步)传递,不需要通过encodeURI()转码
必须设置请求头信息
var param = 'username='+uname+'&password='+pw;
xhr.open('post','04post.php',false);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); -- 头信息
(这里要使用到第三步)第三步:xhr.send(param);//post请求参数在这里传递,并且不需要转码

(3)如果是get请求: xhr.send(null);
如果是post请求:xhr.send(post请求参数);

(4)指定回调函数
该函数调用的条件就是readyState状态发生变化(不包括从0变为1),所以状态变为2,3,4时会各调一次该函数,调用三次

xhr.onreadystatechange = function(){
----------------------------------------
  readyState一共有五个值:
  readyState=0表示xhr对象创建完成
  readyState=1表示已经发送了请求
  readyState= 2 浏览器已经收到了服务器响应的数据
  readyState=3 正在解析数据
  readyState=4 数据已经解析完成,可以使用了
------------------------

    if(xhr.readyState == 4){
       4表示服务器返回的数据已经可以使用了,但是这个数据不一定是正常的
------------------------------
        http的常见状态码
        200表示响应成功
        404没有找到请求的资源
        500服务器端错误
--------------------------------
        if(xhr.status == 200){
            这里的200表示数据是正常的
            alert(xhr.responseText);
        }
    }
}

使用jquery中的封装好的ajax方法
$.ajax({
    url: "ex8.php",
    data: {}, -->参数
    dataType: 'json',  -->数据类型
    type: 'post',    -->提交方式
    //成功返回并数据正常时执行的函数
    success: function  (data) {
    },
    //服务端错误时执行的函数
    error: function (data) { 
    }
});

模拟jquery包装ajax类

function ajax(url, param, type, dataType, callback) {
    var xhr = null;
    // 处理兼容性
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    } else {
        xhr = new ActiveXObject('MicroSoft.XMLHTTP');
    }

    // 2.准备发送
    if (type === 'get') {
        url += '?' + param;
    }
    xhr.open(type, url, true);

    // 3.执行发送动作
    var data = null;
    if (type === 'post') {
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        data = param;
    }
    xhr.send(data);

    // 4.指定回调函数
    xhr.onreadystatechange = function () {
        // 判断是否接收成功
        if (xhr.readyState === 4) {
            // 判断数据是否正常
            if (xhr.status === 200) {
                var data = xhr.responseText;
                // 如果类型是json形式,需要将数据转成json格式
                if (dataType === 'json') {  
                    data = JSON.parse(data);
                }
                callback(data);
            }
        }
    }
}

相关文章

  • 3-初识Ajax

    在ajax中,form表单就没有必要写action了采用ajax表单元素也没有必要有name属性提交按钮也不一定是...

  • 初识Ajax

    ajax是一个老生常谈的问题,其实并不复杂,不过是因为老前辈通过这样的请求方式玩出了很多花样,迷乱了萌新的眼睛,话...

  • 初识ajax

    一、ajax介绍 ajax(Asynchronous Javascript And XML), 在前端的开发中主要...

  • Ajax 初识

    Ajax (Asynchronous JavaScript and XML)   即用JavaScript执行异步...

  • AJAX初识

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 X...

  • 初识Ajax

    一、ajax是什么? 1、Asynchronous JavaScript & XML2、web开发的一种技术3、异...

  • 初识ajax

    如何和后端交互 form表单的提交:点击submit提交,浏览器会默认自动的把input表单中的东西提交到form...

  • Ajax基础知识点总结

    Ajax 技术 第1章 认识Ajax 1.1 初识 ajax 我们平常上网,不管是注册账号,还是浏览网页,其本质就...

  • AJAX,node初识

    AJAX ajax是一种技术方案,但并不是一种新技术。它依赖的是现有的CSS/HTML/Javascript,而其...

  • Ajax相关总结

    一、 认识Ajax 1、 初识 ajax 我们平常上网,不管是注册账号,还是浏览网页,其本质就是通过客户端向服务器...

网友评论

      本文标题:3-初识Ajax

      本文链接:https://www.haomeiwen.com/subject/fqrwnqtx.html