最開始是想了解ajax到底是怎么運作的建蹄,之前就看過不少概念,也懂需要帶的一些參數(shù),但是由于缺乏實際的操作和經(jīng)驗迫筑,不知道url后端給的究竟是什么樣子的,其實現(xiàn)在也沒有真正的獲取到宗弯,只是偶然間發(fā)現(xiàn)了一個免費的天氣API脯燃,叫做和風天氣,然后就想著做一個簡單的交互練練ajax蒙保。
于是查到了二級聯(lián)動辕棚,新手先搬代碼為敬,然后又把js部分捋了一下邓厕,原理主要運用的遍歷和split()方法進行按符號多數(shù)據(jù)的拆分然后將遍歷好的市一個個創(chuàng)建到select中逝嚎,如下圖所示:
因為最近有個項目用的是layui框架,所以開始學習layui详恼,看官方文檔就足夠看明白了补君,文檔寫的還挺有趣的。在用框架之前昧互,功能是可以實現(xiàn)的挽铁,但是想著讓界面更加美化一些,于是添加了form標簽(因為layui的select標簽必須要加載form模板才可渲染出來)敞掘,加上以后倒是好看了叽掘,問題一個接一個:
1.選擇省的時候相應(yīng)的市select并未顯示出來,依然是“請選擇”三個字
這個問題真的很棘手渐逃,首先想到的就是js出了問題够掠,但是并找不到哪里有問題,原代碼采用的是jq選擇器茄菊,$("#province").change(function(){
......
})
我自己想了一個下午沒想出來疯潭,晚上問了一個學長赊堪,他說審查元素,今天早晨又問了老板竖哩,說打斷點調(diào)試哭廉,然后我就明白了,使用layui框架以后select雖然渲染了但是并未在頁面上顯示出來相叁,取而代之的是框架本身運用的dl遵绰、dd組合,所以用id選擇器選擇的province是無效的增淹。
于是乎我改成了class選擇器來選擇dl椿访,可是…...,竟然還是錯的虑润?成玫??依然沒有效果拳喻?哭当??崩潰ing......
我又查了一下冗澈,原來是因為change()方法只適用于text钦勘、textare和select,怪不得沒用亚亲,然后想到官方文檔一定有方法獲取到會變的select值彻采,果不其然,明明我就看過但是就是想不起來朵栖,就是這個form.on()颊亮,其實就是事件監(jiān)聽啦:
我以為到這里就可以顯示了...我好天真柴梆,因為我忘了一個小東西陨溅,沒錯就是官方文檔中寫了的form.render(),我懷疑自己上輩子是不是魚绍在,看過的東西只能記住7秒呢门扇?好了到此為止第一個問題搞定。
2.當查詢某省市天氣后將省份換為“請選擇”時偿渡,市select依舊為上一個市臼寄,依然可以查詢。
這個不科學啊溜宽,用戶體驗很差的好嗎吉拳!
行,我改還不行嗎适揉,我發(fā)現(xiàn)我總是把簡單的問題搞得那么復雜留攒,比如這里煤惩,我想獲取到當前select值,如果為“請選擇”炼邀,我就把下面的select也改為“請選擇”魄揉,事實證明不行,為啥呢拭宁,因為要改的不是select而是input值洛退,這個layui真的奇怪的很,也充分證明了審查元素是個好東西杰标,下面是我的思路:
OK兵怯,fine。我突然豁然開朗腔剂,直接一句$("#city").html()不就行了摇零??烏雞鲅魚
然后就在想桶蝎,如果沒有選擇的話應(yīng)該要給用戶彈出來個框框提示要選天氣才能查白そ觥!不然要給你查個隨機的天氣嗎登渣?噪服??(誒呦胜茧,這個想法可以有逛漫,以后看看能不能搞出來玩玩)速缨,加個alert(),ok!
其實我搞的最久的部分就是ajax傳data參數(shù)我剛開始一直不知道咋傳動態(tài)的(即不確定的數(shù)值)他炊,我真的傻,后來知道了以后踪旷,我還是覺得自己傻乍丈。附上點擊按鈕ajax獲取天氣代碼:
好了,至此完成了一個超級簡單而且比較人性化的查詢天氣的PC端小東西喉前,費時1天整没酣,希望以后還會探索出更多好玩的東西吧!