首页 > 代码库 > 前端小白之每天学习记录----php(4)ajax

前端小白之每天学习记录----php(4)ajax

ajax技术( 异步请求 )
局部无刷新技术: ajax技术不需要刷新页面就能得到服务器的结果,
所以增强了体验。

请求: 发送一次网络连接
目的: 是为了获取服务器的数据

步骤:

第一步:要使用ajax技术, 必须要获取浏览器的ajax对象
    通过浏览器内置的XMLHttpRequest 就可以得到ajax对象
第二步: 打开请求
             open( 打开请求的方式, 请求的地址, true )
第三步: 发送请求
             send使用发送数据的,GET方式一般发送null, 因为get方式的数据是通过url地址传递的
eg:用ajax输出一个hello world
    1.在WWW目录下新建data.txt文件并在里面添加内容hello world。
  2.在相同目录下新建ajax.php如下代码:
  3.启动phpStudy
  4.打开浏览器输入localhpst/ajax.html
  5.点击按钮查看效果
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        window.onload = function(){
            var oBtn = document.querySelector("input");
            oBtn.onclick = function(){
                //第一步:要使用ajax技术, 必须要判断,获取浏览器的xjax对象
                //通过浏览器内置的XMLHttpRequest 就可以得到ajax对象
                var xhr = new XMLHttpRequest();

                //onreadystatechange: 监听服务器数据变化
                xhr.onreadystatechange = function(){
                    //通过xhr对象的属性 readyState的值 就可以判断出来数据接收成功
                    /*
                        1:相当于  xhr.open
                        2: 相当于  xhr.send
                        3: 接收到服务器的部分数据
                        4: 接受到服务端的完整数据
                    */
                    // alert( xhr.readyState );
                    if( xhr.readyState == 4 ){
                        // alert( xhr.responseText );
                        document.querySelector("div").innerHTML = xhr.responseText;
                    }
                }

                //第二步: 打开请求
                //open( 打开请求的方式, 请求的地址, true )
                xhr.open( ‘GET‘, ‘data.txt‘, true );

                //第三步: 发送请求
                //send使用发送数据的,GET方式一般发送null, 因为get方式的数据是通过url地址传递的
                xhr.send( null );
            }
        }
    </script>
</head>
<body>
   <input type="button" value="http://www.mamicode.com/读取数据"> 
   <div></div>
</body>
</html>
eg:用ajax+php输出一个当前时间
  1.在WWW目录下新建一个php文件server.php
server.php
<?php
    // echo date("Y-m-d H:i:s");
    // if( isset( $_GET[‘name‘]) ){  //isset 判断请求是否存在
    //     echo $_GET[‘name‘] . ‘--->‘ . $_GET[‘age‘] . ‘--->‘ . date("Y-m-d H:i:s");
    // }else if( isset( $_POST[‘name‘] ) ){
    //     echo $_POST[‘name‘] . ‘--->‘ . $_POST[‘age‘] . ‘--->‘ . date("Y-m-d H:i:s");
    //     // echo ‘post request: ‘ . date(‘Y-m-d H:i:s‘);
    // }
    echo $_REQUEST[‘name‘] . ‘--->‘ . $_REQUEST[‘age‘] . ‘--->‘ . date("Y-m-d H:i:s");
?>

  2.在WWW目录下新建一个php文件time.php<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        window.onload = function(){
            var oBtn = document.querySelector("input");
            var oDiv = document.querySelector("div");
            oBtn.onclick = function(){
                var xhr = new XMLHttpRequest();
                var url = ‘server.php?name=lxb&age=22&t=‘ + Math.random();//GET方法
                // var url = ‘server.php‘;//post方法

                xhr.onreadystatechange = function(){
                    if( xhr.readyState == 4 ){
                        oDiv.innerHTML += xhr.responseText + ‘<br/>‘;
} } //GET方法 xhr.open( ‘GET‘, url, true ); xhr.send( null ); /* //POST方法 xhr.open( ‘POST‘, url, true ); //如果是用post发送的数据, 需要加一个请求头 xhr.setRequestHeader(‘content-type‘, ‘application/x-www-form-urlencoded‘); //post的数据 放在send函数里面发过去 xhr.send( "name=lxb&age=22" );*/ } } </script> </head> <body> <input type="button" value="http://www.mamicode.com/获取时间"> <div></div> </body> </html>

  3.打开浏览器输入localhpst/time.html  

  4.点击按钮查看效果

jQuery的ajax

$.get     $.post    $.ajax   三种函数形式 

$.get( "1", { 2 }, 3);

1, 请求的url  2,发送的数据(json格式) 3,成功之后的回调函数(参数为接收到的结果-->res)

eg:$.get( "sever.php", { ‘province_id‘, }, function( res ){  });
经典的ajxa----》三级联动
1.省市区表格
2.三种复制表数据方法
  一.在安装PHPstudy目录下的mySQL目录下的data记录了数据库的数据信息
  二.用数据库管理软件导入sql文件
  三.用数据库管理软件复制表
3.数据库返回的数据一般是字符串或者xml形式
所以在php得到数组结果后要用 json_encode  把数组转成类似格式的字符串
<?php
    echo json_encode( $arr);
?>
3.有时候ajax得到的数据是字符串,要转成json形式才能用
<script>
        /*
            JSON对象
                parse: 字符串->json对象
                stringify: json对象->字符串
        */
        // var obj = {
        //     "a" : 10,
        //     "b" : 20
        // };
        // alert( typeof obj );
        // var res = JSON.stringify( obj );
        // alert( res );
        // alert( typeof res );


        var str = ‘{"a" : 10, "b" : 20}‘;
        // alert( typeof obj );
        var obj = JSON.parse( str );
        alert( obj.a + ‘,‘ + obj.b );
</script>

  

前端小白之每天学习记录----php(4)ajax