原生js解析數(shù)據(jù)

解析JSON文件的方法

(1)先封裝ajax文件

function ajaxFun(obj) {
        //1、創(chuàng)建請(qǐng)求對(duì)象
        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
        //2离钝、判斷請(qǐng)求方法
        var method = obj.method.toUpperCase();
        if(method == 'GET') {
                xhr.open('GET', obj.url + '?' + obj.data, true)
                xhr.send(null);
        } else if(method == 'POST') {
                xhr.open('POST', obj.url, true);
                xhr.send(obj.data);
        } else {
                console.error('你請(qǐng)求的方式有誤忿薇,必須是GET或POST中的一種')
        }
        //服務(wù)器返回情況
        xhr.onreadystatechange = function() {
                if(xhr.readyState == 4) {
                        if(xhr.status == 200) {
                                obj.successFun(xhr.responseText);
                        }else{
                                obj.failFun('請(qǐng)求有誤')
                        }
                }
                
        }
}

2倡蝙、寫解析json文件的HTML 文件

<!DOCTYPE html>
<html>

        <head>
                <meta charset="UTF-8">
                <title></title>
                <style type="text/css">
                        * {
                                margin: 0;
                                padding: 0;
                        }
                </style>
                <script src="ajax.js" type="text/javascript" charset="utf-8"></script>
                <script type="text/javascript">
                        //拼接請(qǐng)求參數(shù)
                        //字面量創(chuàng)件函數(shù)
                        var obj = {
                                method: 'GET',
                                url: 'car.json',
                                data: '',
                                successFun: successFun,
                                failFun: failFun
                        };
                        //調(diào)用ajax請(qǐng)求函數(shù)
                        ajaxFun(obj);

                        //請(qǐng)求成功的函數(shù)
                        function successFun(data) {
                                //alert(data);
                                //解析請(qǐng)求下來(lái)的數(shù)據(jù)
                                //把返回的json數(shù)據(jù)轉(zhuǎn)換成js對(duì)象佛纫,對(duì)象可以通過(guò)屬性獲取值
                                var resultObj = JSON.parse(data);
                                //console.log(resultObj)
                                //獲取到ListContents屬性下的數(shù)組(展現(xiàn)在頁(yè)面中的數(shù)據(jù)就保存在這個(gè)數(shù)組中)
                                var contentsArray = resultObj.ListContents;
                                //console.log(contentsArray)
                                //在 js 中 for  in  遍歷時(shí),自定義的變量中保存的是數(shù)組的下標(biāo)
                                var arr = new Array;
                                //拿到的分組的汽車數(shù)據(jù)
                                for(var i in contentsArray) {
                                        var sectionObj = contentsArray[i];
                                        //繼續(xù)解析分組信息的對(duì)象残吩,找到該分組下的汽車信息
                                        var carsArray = sectionObj.GroupInfo;
                                        //遍歷汽車的數(shù)組缰趋,拿到數(shù)組的中的汽車對(duì)象
                                        for(var j in carsArray) {
                                                var carObj = carsArray[j];
                                                //把解析出來(lái)的汽車數(shù)組轉(zhuǎn)存進(jìn)大數(shù)組中
                                                arr.push(carObj);
                                        }
                                }
                                //檢測(cè)arr數(shù)組中數(shù)組的信息
                                //console.log(arr);
                                //解析arr數(shù)組捧杉,提取出汽車的信息
                                for(var k in arr) {
                                        var busObj = arr[k];
                                        console.log(busObj);
                                        //創(chuàng)建DOM節(jié)點(diǎn),把數(shù)據(jù)拼接新對(duì)應(yīng)的節(jié)點(diǎn)中

                                        //創(chuàng)建行節(jié)點(diǎn)埠胖,每循環(huán)一次新建一行
                                        var tr = document.createElement("tr");
                                        //創(chuàng)建列節(jié)點(diǎn)
                                        var tdID = document.createElement("td");
                                        var tdName = document.createElement("td")
                                        var tdLogo = document.createElement("td");
                                        //把解析出來(lái)的數(shù)據(jù)添加進(jìn)對(duì)應(yīng)的節(jié)點(diǎn)中
                                        tdID.textContent = busObj.BrandID;
                                        tdName.innerHTML = busObj.MainBrandName;
                                        //窗簾出存放圖片的img標(biāo)簽
                                        var img = document.createElement("img");
                                        img.src = busObj.imgURL; //  屬性
                                        
                                        //把圖片標(biāo)簽拼接進(jìn)tdLogo標(biāo)簽中
                                        tdLogo.appendChild(img);
                                        
                                        //把td標(biāo)簽拼接進(jìn)tr中
                                        tr.appendChild(tdID);
                                        tr.appendChild(tdName);
                                        tr.appendChild(tdLogo);
                                        
                                        //把tr拼接進(jìn)文檔流(拼接經(jīng)table標(biāo)簽)
                                        var table =  document.getElementById("table")
                                        table.appendChild(tr);
                                }

                        }
                        //請(qǐng)求失敗的函數(shù)
                        function failFun(data) {
                                //alert(data)

                        }
                </script>
    </head>

    <body>
            <!--固定的頁(yè)面布局  一個(gè)表格  一個(gè)表頭-->
            <table id="table" border="1" cellspacing="0" cellpadding="0">
                    <!--表頭-->
                    <tr height="30">
                            <th width="200">品牌ID</th>
                            <th width="100">品牌名稱</th>
                            <th width="100">品牌Logo</th>
                    </tr>

            </table>
    </body>

</html>

復(fù)制代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糠溜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子直撤,更是在濱河造成了極大的恐慌非竿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谋竖,死亡現(xiàn)場(chǎng)離奇詭異红柱,居然都是意外死亡承匣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門锤悄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)韧骗,“玉大人,你說(shuō)我怎么就攤上這事零聚∨郾” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵隶症,是天一觀的道長(zhǎng)政模。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蚂会,這世上最難降的妖魔是什么淋样? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮胁住,結(jié)果婚禮上趁猴,老公的妹妹穿的比我還像新娘。我一直安慰自己彪见,他們只是感情好儡司,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著企巢,像睡著了一般枫慷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浪规,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音探孝,去河邊找鬼笋婿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顿颅,可吹牛的內(nèi)容都是我干的缸濒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粱腻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼庇配!你這毒婦竟也來(lái)了癣籽?” 一聲冷哼從身側(cè)響起仅淑,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寝衫,沒(méi)想到半個(gè)月后柬批,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啸澡,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袖订,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗅虏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洛姑。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖皮服,靈堂內(nèi)的尸體忽然破棺而出楞艾,到底是詐尸還是另有隱情,我是刑警寧澤龄广,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布产徊,位于F島的核電站,受9級(jí)特大地震影響蜀细,放射性物質(zhì)發(fā)生泄漏舟铜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一奠衔、第九天 我趴在偏房一處隱蔽的房頂上張望谆刨。 院中可真熱鬧,春花似錦归斤、人聲如沸痊夭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)她我。三九已至,卻和暖如春迫横,著一層夾襖步出監(jiān)牢的瞬間番舆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工矾踱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恨狈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓呛讲,卻偏偏與公主長(zhǎng)得像禾怠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贝搁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,316評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)吗氏、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,123評(píng)論 4 61
  • 峰回路轉(zhuǎn)乾坤轉(zhuǎn) 小橋流水水潺潺 林間有路復(fù)尋路 落花有情戀無(wú)情
    寶寶愛(ài)飛閱讀 152評(píng)論 0 2
  • 烏村又這樣緩慢又不失凝重地走過(guò)了幾年雷逆,靜靜悄悄地誰(shuí)都不曾察覺(jué)弦讽。袁道秋到了上私塾的年紀(jì),他爹袁余給他請(qǐng)了老師教書(shū)...
    閣樓獨(dú)酌閱讀 211評(píng)論 1 1
  • 目前捂齐,微信支付和支付寶已經(jīng)占據(jù)了絕大多數(shù)商家的柜臺(tái)蛮放,但這個(gè)天平即將被打破,就因?yàn)榈谒拇八⒛樦Ц丁钡某霈F(xiàn)奠宜。其實(shí)早在...
    愛(ài)遞遺主閱讀 209評(píng)論 0 0