美文网首页
Day02(创建Ajax,跨域Jsonp,数据库,demo lo

Day02(创建Ajax,跨域Jsonp,数据库,demo lo

作者: AnnQi | 来源:发表于2017-11-07 14:28 被阅读0次

    Ajax

    什么是Ajax

    AJAX = 异步 JavaScript 和 XML。
    AJAX 是一种用于创建快速动态网页的技术

    通过Ajax改变内容
    <div id="showInfo"></div>
    <form id="form">
        <input type="text" id="user" />
        <!--后台接收的变量名字是啥,就是你的name啊,所以name要和后台对应-->
        <input type="password" id="pass" />
        <input type="button" id="btn" value="登录" />
    </form>
    
    <script type="text/javascript">
            window.onload=function(){
                var btn = document.getElementById('btn');
                var show = document.getElementById("showInfo");
                btn.onclick=function(){
                    var username = document.getElementById('user').value;
                    var password = document.getElementById('pass').value;
                    
                    /*现在开始我们的ajax*/
                    /*ajax 不是一门语言,也不是一个插件,就是一个方法,一个技术*/
                    /*第一步:创建对象*/
                    var xhr = null;
                    if(window.XMLHttpRequest){
                        /*浏览器通过XMLHttpRequest方法创建ajax对象,不过IE5和6不支持*/
                        /*核心XMLHttpRequest*/
                        xhr = new XMLHttpRequest();//实例化一个ajax对象
                    }else{
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    /*初始化准备好了*/
                    /*接着写ajax需要的东西*/
                    var url = 'login.php?un='+username+'&pd='+password;
                    xhr.open('post',url,false);//这一步,就是已经是发送请求了
                    /*open方法声明传输,三个删除,第一个:请求方式;第二个:请求路径;第三个:加载方式(同步、异步,默认,通常,都给我写true)*/
                    //send()用来给后台传参用的,但是一般ajax传的参数很少,所以都直接放在url后面;
                    //这段代码在请求结束后执行,
                    //代表着你请求后要执行的内容
                    xhr.onreadystatechange=function(){//这一步,其实是请求的结果
                        if(xhr.readyState==4&&xhr.status==200){
                            //status==200表示请求成功
                            //404表示没有找到页面或者数据
                            console.log('服务器处理数据完成,并且响应了数据');
                            var data = JSON.parse(xhr.responseText);
                            console.log(data)
                            show.innerHTML=data[0][1];
                        }
                    }
                    xhr.send();
                }
            }
        </script>
    

    login.php ↓

    <?php
        
        $username = $_POST['username'];
        $password = $_POST['password'];
        if($username=='admin'&&$password=='123'){
            echo '<div>登陆成功</div>';
        }else{
            echo '<div>登陆失败</div>';
        }
    ?>
    

    创建 XMLHttpRequest 对象

    var xhr = null;
    if(window.XMLHttpRequest){
              /*浏览器通过XMLHttpRequest方法创建ajax对象,不过IE5和6不支持*/
              /*核心XMLHttpRequest*/
        xhr = new XMLHttpRequest();    //实例化一个ajax对象
    }else{
        xhr = new ActiveXObject("Microsoft.XMLHTTP");  // iE5 和 6
    }
    

    向服务器发送请求

    使用 XMLHttpRequest 对象的 open() 和 send() 方法:

    xmlhttp.open("GET","test1.txt",true);
    xmlhttp.send();
    

    Ajax

    后台数据交互,同步异步传输
    是一种创建交互网页应用的开发技术、主旨在于改善用户体验,实现无刷新效果

    优点:

    不需要插件支持
    优秀的用户体验
    提高web程序的性能
    减轻服务器和带宽的负担

    缺点

    破坏浏览器“前进”、“后退”按钮的正常功能,可以通过简单的插件弥补
    对搜索引擎支持不足

    学会对新知识进行发散性的自学,了解实际开发过程中所学知识的应用和坑等等

    如果出现304错误,代表远程服务端数据没有变化,所以服务端不会响应
    那么,怎么解决呢?
    在你传过去的数据后面加一个随机数就行了

    跨域

    http://www.baidu.com/

    http://www.sogo.com/

    ajax因为浏览器的安全问题,无法跨域访问数据

    那么,我们可以采用script的跨域访问的漏洞,而产生了jsonp的一个技术

    用jsonp来解决跨域问题

    一句话:带有callback的json就是jsonp

    Jsonp是一种数据的调用方式

    Ajax是一个技术
    Jsonp也是一个技术
    虽然我们常说ajax跨域,但是所谓的ajax跨域都是用jsonp来实现,jsonp是一个单独的技术,和ajax没一毛钱关系;

    当给你的API接口自带callback的时候,用jsonp调用就可以了

    当给你的api接口只是单纯的json数据的是,需要自己追加callback来回调;
    在JQ里面,把JSONP和AJAX整合在了一起

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style type="text/css">
                .main{
                    width: 800px;
                    text-align: center;
                    margin: 0 auto;
                }
            </style>
            <script type="text/javascript" src="../jquery-3.2.1.min.js" ></script>
            <script type="text/javascript">
                function abc(data){
                    console.log(data)
                    var d = data.weather;
                    for(var i = 0;i < d.length;i ++){
                        var date = d[i].date;
                        var day = d[i].info.day;
                        var night = d[i].info.night;
                        var tag='';
                        tag+='<span>日期:'+date+'</span><ul>';
                        tag+='<li>白天天气:'+day[1]+'</li>';
                        tag+='<li>白天温度:'+day[2]+'</li>';
                        tag+='<li>白天风向:'+day[3]+'</li>';
                        tag+='<li>白天风速:'+day[4]+'</li>';
                        tag+='</ul>';
                        console.log(tag)
                        $('#nr').html(tag)
                    }
                }
                
                
                $(function(){
                    var ct = $('#city');
                    var nr = $('#nr');
                    ct.change(function(){
                        nr.html('');
                    });
                    $('#btn').click(function(){
                        var code = ct.val();
                        var url = 'http://cdn.weather.hao.360.cn/api_weather_info.php?app=hao360&code='+code+'&_jsonp=abc';
                        var script = document.createElement('script');
                        script.src=url;
                        document.body.appendChild(script);
                    });
                });
            </script>
            </head>
        <body>
            <div class="main">
                <button id="btn">获取</button>
                <select id="city">
                    <option value="101010100">北京</option>
                    <option value="101020100">上海</option>
                    <option value="101280101">广州</option>
                    <option value="101280601">深圳</option>
                </select>
                <div id="nr">
                    
                </div>
            </div>
        </body>
    </html>
    

    数据库

    什么是数据库?
    就是按照数据的组织架构来存储数据的仓库,就叫做数据库
    也就是说,我们平时的数据,都是存在数据库里面的,用json存放大量数据是非常麻烦已经不好的方式;

    左键点击wamp,选择phpmyadmin,进入数据库
    账号:root,密码没有,为空;

    插入数据:INSERT INTO `login` (`username`, `password`) VALUES ('admin', '123456');
    
    查找数据:SELECT * FROM `login` WHERE `username` = 'admin' AND `password` = '123456'
    

    当你工作中,公司采用的服务器版本5.5以下,可以使用PHP的mysql方法,但是如果是5.5以上,就用mysqli方法;

    增加:insert into 数据表(字段1,字段2,字段3) values('值1','值2','值3')
    删除:delete from 数据表 where id=你要删除的数据id
    修改:update 数据表 set 字段1=‘值1’,字段2=‘值2’,字段3=‘值3’ where id=你要修改的数据ID
    查询:select(你要查询的字段,*代表全部字段) from 表名 where (你的查询条件)

    demo login

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <input type="text" id="user" />
            <input type="password" id="pass" />
            <button id="zc">注册</button>
            <button id="dl">登录</button>
        </body>
        <script type="text/javascript" src="jquery-3.2.1.min.js"></script>
        <script type="text/javascript">
            $(function(){
                
                var us = $("#user").val();
                var pd = $("#pass").val();
                    
                $("#zc").click(function(){
                    var sp = us.slice(0,2);
                    console.log(sp);
                    $.ajax({
                        type:"post",
                        url:"login.php",
                        data:{
                            user:us,
                            pass:pd,
                            flag:0
                        },
                        success:function(data){
                            alert(data);
                        }
                    });     
                });
                
                $("#dl").click(function(){              
                    $.ajax({
                        type:"post",
                        url:"login.php",
                        data:{
                            user:us,
                            pass:pd,
                            flag:1
                        },
                        success:function(data){
                            alert(data);
                        }
                    });     
                });
            })
        </script>
    </html>
    
    <?php
        $us = $_POST["user"];
        $pd = $_POST["pass"];
        $flag = $_POST["flag"];
        $_mysqli = new mysqli();
        $_mysqli -> connect("localhost","anqxmcn","123456","anqxmcn");  
        $_mysqli -> set_charset("utf8");
        
        if($flag==1){
            $result = $_mysqli -> query("SELECT * FROM `login` WHERE `username` LIKE '".$us."' AND `password` LIKE '".$pd."'");     
            $row = $result -> fetch_row();
            if($us==$row[0]&&$pd==$row[1]){
                echo '登录成功';
            }else{
                echo '登录失败';
            };
        
        }else{
            $result = $_mysqli -> query("INSERT INTO `anqxmcn`.`login` (`username`, `password`) VALUES ('".$us."', '".$pd."');");
            if($result==1){
                echo '注册成功';
            }else{
                echo '注册失败';
            };
        };
    ?> 
    

    相关文章

      网友评论

          本文标题:Day02(创建Ajax,跨域Jsonp,数据库,demo lo

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