Ajax

作者: candy252324 | 来源:发表于2017-02-20 17:07 被阅读0次

1.ajax 是什么?有什么作用?

ajax主要是实现页面和web服务器之间数据的异步传输。
不采用ajax的页面,当用户在页面发起请求时,就要进行整个页面的刷新,刷新快慢取决于服务器的处理快慢。在这个过程中用户必须得等待,不能进行其他操作;采用ajax的页面,可以实现页面的局部更新,并且发起请求后,用户还可以进行页面上的其他操作;

2.前后端开发联调需要注意哪些事情?后端接口完成前如何 mock 数据?

需要注意的事情:

  • 约定数据:确定需要传输的数据及数据类型
  • 约定接口:确定接口名称及请求和响应的格式,请求的参数名称、响应的数据格式;
    如何mock数据:
  • 方法一:使用xampp等工具,搭建本地web服务器,编写php脚本提供数据
  • 方法二:使用server-mock模拟数据

3.点击按钮,使用 ajax 获取数据,如何在数据到来之前防止重复点击?

  • 使用button的disabled属性,配合setTimeout 0,使在数据到来之前按钮都不能被点击
ele.addEventListener('click',function(){ 
    this.disabled=true; 
    ajax();
    setTimeout(this.disabled=false,0); 
});
  • 设置一个开关,初始状态是false,发生点击事件后,开关状态置为true,直到ajax请求完成后,开关状态才会被重新置为false。
var lock = false;
ele.addEventListener('click',function(){
    if(!lock){ 
        lock = true; 
        ajax(); 
        lock = false; 
    }
});

代码

1.封装一个 ajax 函数,能通过如下方式调用

function ajax(opts) {
    //  做参数兼容
    opts.success = opts.success || function(){};
    opts.error = opts.error || function(){};
    opts.type = opts.type || 'get';
    opts.dataType = opts.dataType || 'json';
    opts.data = opts.data || {};

    var dataStr = '';
    for (var key in opts.data) {
        dataStr += key + '=' + opts.data[key] + '&';
    }
    dataStr = dataStr.substr(0, dataStr.length - 1);
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState === 4) {
            if(xmlhttp.status === 200){
                if(opts.dataType === 'text'){
                    opts.success(xmlhttp.responseText);
                }
                if(opts.dataType === 'json'){
                    var json = JSON.parse(xmlhttp.responseText);
                    opts.success(json);                 
                }        
            }else{
                opts.error();   
            }
        }
    };
    if (opts.type.toLowerCase() === 'post') {
        xmlhttp.open(opts.type, opts.url, true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send(dataStr);
    }
    if (opts.type.toLowerCase() === 'get') {
        xmlhttp.open(opts.type, opts.url + '?' + dataStr, true);
        xmlhttp.send();
    }
}

调用方式:

document.querySelector('#btn').addEventListener('click', function(){ 
    ajax({ url: 'getData.php',    //接口地址
       type: 'get',     // 类型,post 或者 get,
       data: { 
       username: 'xiaoming', 
       password: 'abcd1234' 
       }, 
       success: function(ret){ 
         console.log(ret);  // {status: 0} 
       }, 
       error: function(){ 
         console.log('出错了') 
      } 
    })
});

代码

1.实现如下加载更多的功能
本地测试通过GitHub上代码地址
2.实现注册表单验证功能
xampp上测试通过GitHub上代码地址

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:Ajax

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