1、Ajax概念以及优势

* 什么是AJAX

* AJAX(Asynchronous JavaScript And XML),(异步 JavaScript 和 XML),中文名:阿贾克斯。是指一种创建异步交互式网页应用的网页开发技术。

* AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术

* 前端通过与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

* 为什么要使用AJAX

* 更自然、流畅的用户体验,对用户的操作即时响应

* 在不中断用户操作的情况下与Web服务器进行通信

* 更灵敏的响应用户访问,实现近似于桌面应用程序的交互效果

* 通过局部更新页面降低网络流量,提高网络的使用效率

2、同步异步

  同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,

只有接收到返回的值或消息后才往下执行其他的命令。

  异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,

那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。

3、Ajax 步骤编写

 <script>
//创建对象
let xhr = new XMLHTTPRequest(); xhr.open("get/post","url",是否异步true、false);//一般是true不是的话一般人干不出这种事情
xhr.onreadystatechange = function(){
if(xhr.status==200&&xhr.readystate==4)
fun(xhr.responseText);
}
xhr.send();
function fun(){
.....
}
</script>

4、XMLHTTPRequset兼容写法

<script>
let xhr;
if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHttp");
}else{
xhr = new XMLHTTPRequest();
}
</script>

5、Ajax返回Json

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
</html>
<script>
    let xhr = new XMLHttpRequest();
    xhr.open("GET","testJson.php","true");
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            let myJsonStr = xhr.responseText;
            let myJsonObj = JSON.parse(myJsonStr);
            console.log(myJsonObj.name,myJsonObj.age);
        }
    }
    xhr.send();
</script>
<--testJson.php-->
<?php
    echo '{"name":"laowang","age":18}';
?>

6、AjaxPost

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <input type="text" name="username" id="t1" /><span id="s"></span></br>
        <input type="text" name="pwd" />
    </body>
</html>
<script>    
    let t1 = document.getElementById("t1");
    let s = document.getElementById("s");
    t1.onblur = function() {
        //1.创建对象
        let xhr = new XMLHttpRequest();
        //2.设置连接地址   get方式发送响应
        xhr.open("POST", "isUserExistPost.php", "true");
        //这句话必须抄 post的请求头
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        //3.设置响应事件
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                //5.获取响应字符串
                if (xhr.responseText == "1") {
                    s.innerHTML = "用户名已存在,请重新注册";
                } else {
                    s.innerHTML = "恭喜注册成功";
                }
            }
        }         //4.发送  通过send传递参数
        //多个参数依然用&组装 "user_name="+ userName +"&user_age="+ userAge ;
        xhr.send("username=" + t1.value);
    }
</script> <?php
    header("Content-type:text/html;charset=utf-8");
    //连接数据库
    $conn = mysql_connect("localhost","root","root");
    //选择数据库
    mysql_select_db("xah51901");
    //获取请求过来的数据
    $name = $_POST["username"];
    
    $reslut = mysql_query("select * from student where stuName = '$name'");
    
    $rows = mysql_num_rows($reslut);
    
    if($rows == 1){
        echo "1";
    }else{
        echo "0";
    }
?>

最新文章

  1. HTML5 之拖放(drag与drop)
  2. 查看nginx在安装时开启了哪些模块
  3. 遇到 Line 21: StartTag: invalid element name ios
  4. 2014北大研究生推免机试(校内)-复杂的整数划分(DP进阶)
  5. CreateJSのTweenJS、SoundJS、PreloadJS
  6. Android 监听ListView、GridView滑动到底部
  7. 自定义上传按钮 &lt;input type=&quot;file&quot; name = &quot;file&quot;/&gt; (将file隐藏在button下)
  8. 并发编程: c++11 thread(Func, Args...)利用类成员函数创建线程
  9. JAVA课程设计-购物车 (201521123101 柏清晔)
  10. 基于Android的高校饮水宝app
  11. 搭建第一个spring boot项目
  12. 剑指offer——栈的压入、弹出序列
  13. Linux atop 监控系统状态
  14. &lt;airsim文档学习&gt; Street View Image, Pose, and 3D Cities Dataset
  15. [转帖]盖国强:Oracle 路线图
  16. Gmail 设置,时区
  17. VM workstation 与 VM vSphere的区别 [转载]
  18. idea svn 使用问题
  19. day8 python学习 集合 深浅拷贝
  20. Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)

热门文章

  1. P4929-[模板]舞蹈链(DLX)
  2. P4234-最小差值生成树【LCT】
  3. 深入理解netty---从偶现宕机看netty流量控制
  4. 【C++ Primer Plus】编程练习答案——第3章
  5. (Java)面向对象的三大特征
  6. 配置Internal Load balancer中VM的外网访问
  7. 题解 CF1119H Tripe题解
  8. Billu_b0x2内网渗透(多种提权方法)靶场-vulnhub
  9. struts2漏洞复现分析合集
  10. python的函数参数传递方式