Ajax第三天

XML

  • XML是一種標(biāo)記語言,很類似HTML,其宗旨是用來傳輸數(shù)據(jù),具有自我描述性(固定的格式的數(shù)據(jù))。
  • HTML是來展現(xiàn)網(wǎng)頁的
  • XML是把數(shù)據(jù)給用戶來用(存儲數(shù)據(jù)的)
<?xml versio = "1.0" encoding = "UTF-8"?>
<html>
        <body>
                <div>學(xué)習(xí)xml</div>
                <name>itcast</name>
                <age>18</age>
        </body>
</body>

語法規(guī)則

  • 1、必須有一個根元素。
  • 2、可以自定義標(biāo)簽名。
  • 3、不可有空格、不可以數(shù)字或 .開頭、大小寫敏感
  • 4、不可交叉嵌套
  • 5、屬性雙引號
  • 6、特殊符號要使用實體
  • 7、注釋和HTML一樣

雖然可以描述和傳輸復(fù)雜數(shù)據(jù),但是其解析過于復(fù)雜并且體積較大,所以現(xiàn)在開發(fā)已經(jīng)很少使用了。

JSON

即javaScript Object Notation 另一種輕量級的文本數(shù)據(jù)交換格式,獨立與語言。

  • 語法規(guī)則

    • 1、數(shù)據(jù)在名稱/值對中
    • 2、數(shù)據(jù)由逗號分隔(最后一個健/值對不能帶逗號)
    • 3、花括號保存對象方括號保存數(shù)組
    • 4、使用雙引號

JSON解析

  • JSON數(shù)據(jù)在不同語言進行傳輸時,類型為字符串,不同的語言各自也都對應(yīng)有解析方法,需要解析完成后才能讀取。

  • 1、Javascript解析方法

eavl()、JSON對象、JSON.parse()、JSON.stringify();

  • 2、PHP解析方法

json_encode()、json_decode()

var json = JOSN.stringify(obj)  //對象轉(zhuǎn)json
var object = JOSN.parse(josn) //json轉(zhuǎn)對象
  • eaval 可以將字符串解析成JS可以識別的語法
var str = 'sleret(1)';
eval('('+str+')');
結(jié)果 為 1
  • JSON一轉(zhuǎn)換變成Obj
var json = '{"mane":"itcast","age":10 }';
var obj = eval('('+ '{"mane":"itcast","age":10 }'+')');
console.log(obj);

cc:ie6+快捷鍵 把js兼容放在里面

  • 在PHP中解析JOSN
//數(shù)據(jù)是存在數(shù)據(jù)庫里,從數(shù)據(jù)里取后往往是一個數(shù)組或?qū)ο?需要轉(zhuǎn)換成JOSN
$arr = array(
 'name'=>'itcast',
'age'=>10
) ;

echo json_encode($arr);//轉(zhuǎn)換成josn

$obj = json_decode($json);//轉(zhuǎn)換成對象

echo $obj->name;//訪問對象屬性


$result=file_get_content('stars.json');//獲取文件
echo $result;

Ajax工具函數(shù)封裝

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax工具函數(shù)</title>
</head>
<body>
    <script>
        // 定義一個命名空間
        var $ = {
            params: function (args) { // 專門處理我們的數(shù)據(jù)
                var o = '';
                for(var k in args) {
                    o += k + '=' + args[k] + '&';
                }

                o = o.slice(0, -1);

                return o;
                // console.log(o);
            },
            ajax: function (options) {
                // 初始化參數(shù)
                var type = options.type || 'get';
                var url = options.url || location.pathname;

                // get 方式 url?key=val&key1=val1
                // post 方式 xhr.send(key=val&key1=val1)
                var data = this.params(options.data || {});

                // var success = options.success || function () {console.log('回調(diào)函數(shù)不能為空')}

                var success = options.success;

                var xhr = new XMLHttpRequest;

                if(type == 'get') { // 當(dāng)請求方式為get,參數(shù)放到url上
                    url = url + '?' + data;
                    data = null;
                }

                // 設(shè)置請求方式
                xhr.open(type, url);

                if(type == 'post') { // 當(dāng)請求方式為post,需要設(shè)置Content-Type
                    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                }
                
                // 發(fā)送請求主體
                xhr.send(data);

                xhr.onreadystatechange = function () {
                    if(xhr.readyState == 4 && xhr.status == 200) {
                        // 調(diào)用回調(diào)函數(shù)并傳參
                        var result = JSON.parse(xhr.responseText);

                        success(result);
                    }
                }
            }
        }

        // 調(diào)用函數(shù)
        $.ajax({
            type: 'post',
            url: 'demo.php',
            data: {name: 'itcast', age: 10},
            success: function (data) {
                console.log(data);
            }
        });


        function fn(arg1) {
            // alert(arg1);

            // arg1();
        }

        // fn(1);

        // fn([1,2]);

        // fn({name: 'itcast'});

        var callback = function () {
            alert(1);
        }

        fn(callback);

        // for(var key in location) {
        //  console.log(key + '~~~~' + location[key]);
        // }
    </script>
</body>
</html>
  • PHP文件
<?php
    // 接收數(shù)據(jù) 
    //  以JSON方式返回
    echo json_encode($_GET);
?>

補充

get數(shù)據(jù) 傳在url 后面
Conten-type 是設(shè)置send里面的類型
有g(shù)et 就不要Content-type

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Ajax的基本概念及使用 同步&異步 同步:必須等待前面的任務(wù)完成,才能繼續(xù)后面的任務(wù); 異步:不受當(dāng)前主要任務(wù)的...
    magic_pill閱讀 2,046評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,073評論 4 61
  • 體脂率和肌肉是健身的朋友追求的,低體脂率可以讓肌肉更加明顯,身材更加好看。尤其對健美運動員來說,低于5%的體脂率,...
    九魚亭閱讀 917評論 0 0
  • 1861年的今天,歷史上第一張彩色照片在英格蘭皇家學(xué)院展出,拍攝者是物理學(xué)家麥克斯韋,他通過物理光學(xué)手段和加色法拍...
    第二輛閱讀 152評論 0 0

友情鏈接更多精彩內(nèi)容