美文网首页
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

    Ajax 什么是Ajax AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网...

  • 解决ajax跨域问题

    Jsonp解决ajax跨域问题 CORS解决ajax跨域问题

  • ajax跨域请求

    ajax跨域请求(jsonp) 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案JSONP jQue...

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

  • 珠峰 AJAX --- JSONP跨域

    珠峰 AJAX --- JSONP跨域AJAX(异步 javascript and XMLHTTPReq...

  • 复习jsonp和promise

    一.jsonp 1.jsonp是跨域访问api,ajax不能跨域 2.在vue中使用jsonp首先要安装jsonp...

  • jQuery笔记

    Ajax跨域访问 dataType设置为"jsonp" jsonp设置为"jsonpCallback"该参数是用于...

  • 跨域的问题

    传统的JSONP跨域方法 JQ的ajax调用是最常见的调用方法之一,在自己写一些小demo过程中,总是会遇到跨域问...

  • 跨域实战解决方案

    一.跨域方案 1.JSONP跨域 (1)前端发起jQuery ajax 的get请求 $.getJSON...

  • 跨域上传图片并预览

    跨域上传文件 之前解决跨域问题都是使用的JQuery的JSONP类型的Ajax请求,JSONP原理是让服务器把数据...

网友评论

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

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