• AJAX


    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
    AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。
    AJAX 是一种用于创建快速动态网页的技术。
    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新
    传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。
    练习:
    1.输入用户名,看是否可用
    主页面
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script src="../jquery-1.11.2.min.js"></script>  <!--若要引用jQuery和外部JS,jQuery一定放在最前面,外部JS放在后面-->
    </head>
    
    <body>
    <div><input type="text" id="uid" /><span id="xinxi"></span></div>  <!--AJAX不用提交,所以不用写name,但必须写id-->
    </body>
    
    <script type="text/javascript">
    $(document).ready(function(e) {
    
        //AJAX   局部刷新技术,页面整体不刷新
        //输入用户名,看是否可用
    $("#uid").blur(function(){ //失去焦点时触发事件 //把文本框的值取出来 var uid = $(this).val(); //调用AJAX ajax是一种方法,所以要加括号,括号里的参数是json数据,所以用花括号,注意最后面有分号 $.ajax({ //牢记各个参数及其格式 ***** async:false, //AJAX同步 url:"ChuLi.php", //处理页面 data:{u:uid}, //传递的数据,JSON数据,若传递多个数据,中间用逗号隔开 type:"POST", //提交方式,注意加引号 dataType:"TEXT", //返回数据类型,注意dataType的T要大写,三种数据类型:TEXT,JSON,XML,注意均为大写 success:function(data){ //回调函数,data返回值,为形参 success是指AJAX调用成功后,返回过来执行这个方法 if(data.trim()=="OK") //trim()去掉前后空格 { var str = "该用户名可以使用!"; $("#xinxi").html(str); //将str字符串添加到<sapn></sapn>标签中 } else { var str = "<span style='color:red'>该用户名已经存在!</span>"; $("#xinxi").html(str); } } }); }) }); </script> </html>

    注意:在调用AJAX返回数据判断时可用trim()方法去掉前后空格,以防出错

    处理页面

    <?php
    //接收传递过来的参数
    $uid = $_POST["u"];
    //查数据库
    include("../DB.class.php");
    $db = new DB();
    $sql = "select count(*) from Users where Uid = '{$uid}'";
    $attr = $db->Query($sql,0,"weixin");
    if($attr[0][0]==1)
    {
        echo "NO";    //输出数据类型由dataType决定,本例中dataType为TEXT,所以输出的是字符串
    }
    else
    {
        echo "OK";    
    }

    2.输入用户名和密码,看能否登录

    主页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script src="../jquery-1.11.2.min.js"></script>
    
    </head>
    
    <body>
    <h1>登录</h1>  <!--AJAX不用提交,所以不用<form></form>-->
    <div>用户名: <input type="text" id="uid" /></div><br />
    
    <div>密码: &nbsp; <input type="password" id="pwd" /></div><br />
    
    <div><input type="button" id="btn" value="登录" /></div><br />
    
    </body>
    </html>
    <script type="text/javascript">
    $(document).ready(function(e) {
        /*
        数据传输:同步:传输必须等到接收方接收到,才能传下一个;
                异步:传输不用等到对方接收就可以继续传输
                
        AJAX: 同步:AJAX必须处理完才能继续向下执行;
        ··       异步:AJAX在处理数据的同时代码继续向下执行
        
        
        */
        
        $("#btn").click(function()
        {  
            var uid = $("#uid").val();
            var pwd = $("#pwd").val();
            
            $.ajax(
            {
                async:false,     
                url:"LoginChuLi.php",
                data:{u:uid,p:pwd},
                type:"POST",
                dataType:"TEXT",
                success: function(data)
                {                
                    if(data.trim()=="OK")
                    {
                        window.location = "test.php";    //跳转页面
                    }
                    else
                    {
                        alert("用户名或密码错误!");    
                    }            
                    
                },    
                /*error: function(){}执行失败时调用,一般不常用*/                
                
            });        
        })  
    });

    处理页面

    <?php
    $uid = $_POST["u"];
    $pwd = $_POST["p"];
    include("../DB.class.php");
    $db= new DB();
    $sql = "select count(*) from Users where Uid = '{$uid}' and Pwd = '{$pwd}'";
    
    $attr = $db->Query($sql,0,"weixin");
    if($attr[0][0]==1)
    {
        echo "OK";
    }
    else
    {
        echo "NO";    
    }

    AJAX异步的问题,例如

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script src="../jquery-1.11.2.min.js"></script>
    <style>
    #test{ width:100px; height:100px; background-color:#F60;}
    </style>
    </head>
    <body>
    <div id="test"></div>
    </body>
    </html>
    <script type="text/javascript">
    $(document).ready(function(e) {
    $("#test").click(function()
        {
            $("#test").html("");  //清空原有数据
            $.ajax(
            {
                //ajax默认是异步的,因为在调用处理页面的时间,下面代码继续执行,而alert的执行时间较短,所以#shuju这个div还没有返回,alert就已经执行完毕,
    解决方法:变为同步即可:async:false
    async:false, url:"TestCL.php", dataType:"TEXT", success: function(data) { $("#test").html(data); } }); alert($("#shuju").html()); }) }); </script>
    <?php
    echo "<div id='shuju' style='color:red'>hello world!</div>";

    AJAX异步时

    AJAX同步时

     报错:

    当错误信息提示中有fetch_all()或fetch_row()时一定是SQL语句出错了,解决方法:输出SQL语句,进行输出调错

    AJAX调用时,返回整页信息,需要从中找到错误提示

  • 相关阅读:
    apiAutoTest:基于mitmproxy实现接口录制
    FastAPI + Vue 前后端分离 接口自动化测试工具 apiAutoTestWeb
    FastAPI项目实战:"异步"接口测试"平台"
    apiAutoTest:自动化测试用例中调用自定义函数的实现
    测试笔记01-Git
    C++:常量
    C++: 变量类型
    C++:数据类型
    C++:第一个c++程序
    mitrproxy抓包微信小程序
  • 原文地址:https://www.cnblogs.com/xinghun/p/5513578.html
Copyright © 2020-2023  润新知