




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目一、Ajax概 什么是 Ajax對象:如何獲得Ajax對 Ajax對象的屬 編程步 編碼問 Ajax的優(yōu) 緩存問題(IE瀏覽器 案例:修改1.8案例,使用post請 二、 什么是 數(shù)據(jù)交 輕量 JSON語法 如何使用JSON來編寫Ajax應(yīng)用程 同步請 案例:修改1.8案例step1中的JS代碼(使用同步請求 一、Ajax概述Xml的技術(shù),其實(shí)質(zhì)是利用瀏覽器內(nèi)置的一個特殊對象(XMLHttpRequestAjax對Xml文檔AjaxAjax對象:如何獲得Ajax對象functiongetXhr(){//注意:后面的案例都將用到此函數(shù)varxhr=null;functiongetXhr(){//注意:后面的案例都將用到此函數(shù)varxhr=null; }return} }return}Ajax對象的屬性oneadystaecanereadystatechange。Ajax對象的readyState屬性發(fā)生改變,比如從0到1,則會產(chǎn)生onreadystatechange事件。3)responML:獲得服務(wù)器返回的Xml文檔。5)readyStateAjaxnumber類型的值。5個值,分別是:①0(②1(③2(④3(⑤4(編程步驟getstep1Ajax對象,比如:varxhr=getXhr();//調(diào)用之前定義的函數(shù)step2Ajaxget請求xhr.open('get',check_username.do?username=chang&age=23,true);方法:建true:表示異步請求(Ajax對象發(fā)送請求時,用戶可以對當(dāng)前頁面作其他false:表示同步請求(Ajax對象發(fā)送請求時,瀏覽器會鎖定當(dāng)前頁面,用functionfunctiondom操作……}}poststep1Ajax對象,比如:varxhr=getXhr();//調(diào)用之前定義的函數(shù)step2Ajaxpost請求content-type消息頭getsend因?yàn)榘凑誋TTP協(xié)議的要求,發(fā)送post請求時,應(yīng)該發(fā)送一個content-typeAjax對象在默認(rèn)情況下,不會發(fā)送這個消息setRequestHeader方法來添加。編碼問題getIE瀏覽器內(nèi)置的Ajax對象會使用“GBK”或“GB2312”對中文參數(shù)進(jìn)行編碼,而其他瀏覽器(Chrom、Firefox)內(nèi)置的Ajax對象會使用“utf-8”對中文參數(shù)進(jìn)行編碼。服務(wù)<Connectorport="8080"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"<Connectorport="8080"maxThreads="150"minSpareThreads="25"maxSpareThreads="75"enableLookups="false"redirectPort="8443"acceptCount="100"step2encodeURI()函數(shù)(JS中內(nèi)置函數(shù))對請求地址進(jìn)行編碼。encodeURI()varuir='check_username.do?username='+$F('username');post所有瀏覽器(一般指三大瀏覽器:Chrom、Firefox、IE)Ajax對象都會使用注意事項:FirefoxAjax的優(yōu)點(diǎn)緩存問題(IE瀏覽器getIE瀏覽器(其他瀏覽器沒這個問題)內(nèi)置的Ajax對象會檢查請求地址是否過,post方式發(fā)請求。3)案例:在IE瀏覽器中測試緩存問題step1:getNumber.jsp頁面"<divfunctiongetNumber(){varvarfunctiongetNumber(){varvar}}step3:ServletserviceifRandomr=newRandom();}案例:簡易(使用Ajax進(jìn)行相關(guān)驗(yàn)證,get請求varxhr=getXhr();//step1獲得Ajax//step2Ajax var functioncheck_number(){//檢查varxhr=getXhr();var <formaction="regist.do" 用戶名:<formaction="regist.do" 用戶名:<inputtype="textname="usernameid="username"<spanclass="tips"真 :<inputtype="text" :<inputtype="text"name="number"id="number"onblur="check_number();"/><ahref="javascript:;"<spanclass="tips"<inputtype="submitvalue="提交hefaarphref="#"一起使用,表示a元素不再指向一個地址,而是點(diǎn)擊后觸發(fā)一個PrintWriterout=response.getWriter();Stringuri=PrintWriterout=response.getWriter();Stringuri=Stringaction=uri.substring(uri.lastIndexOf("/"),uri.lastIndexOf("."));if(action.equals("/check_username")){Stringusername=request.getParameter("username");try{//模擬耗時操作Thread.sleep(6000);}catch(InterruptedExceptione){}thrownewServletException("someerror"); StringStringnumber1=request.getParameter("number");HttpSessionsession=request.getSession();String }else 案例:修改1.8案例,使用post請求functioncheck_username_post(){varxhr=getXhr();varfunctioncheck_username_post(){varxhr=getXhr();var}}案例:使用Ajax實(shí)現(xiàn)下拉列表Stringname=request.getParameter("name"); }else Stringname=request.getParameter("name"); }else step2:select.jsp<select<selectid="s1"<divfunctionvarfunctionvarif(xhr.readyState==4){var }}二、JavaScriptObjectNatation,是一種輕量級的數(shù)據(jù)交換技術(shù)規(guī)范(數(shù)據(jù)交換將數(shù)據(jù)轉(zhuǎn)換成一種中間的,與平臺無關(guān)的數(shù)據(jù)格式(XmlJSON字符串)發(fā)送輕量級JSONXmlXml現(xiàn)在用的少了(AjaxxXml交換數(shù)據(jù)。JSON語法 {varobj={'name':'chang','age':22};functionf2(){//表示一個對象}varvarobj={'name':'chang','age':22};functionf2(){//表示一個對象}var }}注意事項:JavaScript中創(chuàng)建對象的三種方式(JavaScript8章:Json語法來創(chuàng)建varvarp=varobj=newvarobj=new = obj.age==1=this.age=}vararr=[{'name':'chang','age':22},{'name':'bo','age':23}];}如何使用JSON來編寫Ajax應(yīng)用程序一般使用JSON提供的API(json-lib)來實(shí)現(xiàn)轉(zhuǎn)換(6個包:1主5副。也可用谷歌提供的API。例如例如 /**效果:{'name':'chang','code':'10086','price':12.8}*/publicstaticvoidtest1(){Stocks=newStock(); /**效果:{'name':'chang','code':'10086','price':12.8}*/publicstaticvoidtest1(){Stocks=newStock(); JSONObjectobj=JSONObject.fromObject(s);//json對象StringjsonStr= /**/**publicstaticvoidtest2(){Randomr=newRandom(); DecimalFormatdf=newDecimalFormat("#.##");for(inti=0;i<3;i++){ Stocks=newStock(); doubleJSONArray}String publicstaticvoidtest3()publicstaticvoidtest3()Stock[]stocks=newRandomr=newDecimalFormatdf=newfor(inti=0;i<3;i++){ Stocks=newStock(); JSONArray}String step2:JSONJavaScriptjs文件,里面提供了很多常用的函數(shù),比如: :分別依據(jù)function var//alert(typeof//prototype框架提供的evalJSONJavaScript function varvar 案例:的實(shí)時行/**JSON/**JSONRandomr=newRandom(); DecimalFormatdf=newDecimalFormat("#.##");for(inti=0;i<8;i++){ Stocks=newStock(); s.setCode("6000"+r.nextInt(30));doubleprice=r.nextInt(100)+r.nextDouble(); stocks.add(s);}JSONArrayarray=JSONArray.fromObject(stocks);//將Java數(shù)組轉(zhuǎn)成JSON字符串StringjsonStr=array.toString(); <body<body<divid="d1"><div 名稱 代碼 <tbodyfunctionf1(){ functionf1(){ functionquoto(){ varxhr=getXhr(); xhr.onreadystatechange=function(){if(xhr.readyState==4){vartxt=vararr=txt.evalJSON();//將json字符串轉(zhuǎn)換成javascript對象組成的數(shù)組varhtml='';//將數(shù)組中的數(shù)據(jù)取出來,添加到tbody html+='<tr><td>'+arr[i].name+'</td><td>'+arr[i].code+'</td><td>'+arr[i].price+ $('tb1').innerHTML= 注意事項:innerHTML屬性對于IEtdtable里的其他節(jié)tr、tbody、thead、caption都不能賦值,只能用它去讀(兼容性問題。案例:顯示熱賣的前3個商品publicList<Sale>publicList<Sale>limit(inttop)throwsList<Sale>list=newArrayList<Sale>(); Connectionconn=DBUtil.getConnection();PreparedStatementprep=conn.prepareStatement("select*fromchang_saleorderbyqtydesclimitprep.setInt(1,ResultSetSalesale=new return step3:ActionServletserviceifintSaleDAOdao=newSaleDAO(); List<Sale>sales=newArrayList<Sale>();try{sales=dao.limit(top); JSONArrayarray=JSONArray.fromObject(sales);StringjsonStr=array.toString(); out.println(jsonStr);}catch(Exceptione){ functionfunctionquoto(){ varxhr=getXhr();}varif(xhr.readyState==4){ varfunctionfunctionquoto(){ varxhr=getXhr();}varif(xhr.readyState==4){ vartxt=xhr.responseText;vararr=txt.evalJSON(); varhtml=''; html+='<tr><td>'++'</td><td>'+arr[i].qty+$('tb1').innerHTML=html;} }同步請求xhr.responseText方法來獲得服務(wù)器返回的數(shù)據(jù)。例如:if(navigator.userAgent.indexOf('Firefox')!=-1){return return'other';}//}functionif(getType()!
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化纖坯布采購合同范本
- 農(nóng)信社借款合同范本
- 出售液壓設(shè)備合同范本
- 產(chǎn)品貨物裝運(yùn)合同范本
- 出讓生鮮小店合同范本
- 勞務(wù)合同范本字體
- 出口服裝合同范本
- 中介房產(chǎn)股合同范本
- 公司設(shè)計合同范本
- 乙方基坑支護(hù)合同范本
- 地理-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 小巴掌童話課件
- 教科版六年級科學(xué)下冊全冊教學(xué)設(shè)計教案
- 部編版小學(xué)五年級下冊《道德與法治》全冊教案含教學(xué)計劃
- 運(yùn)動會活動流程中的醫(yī)療安全保障措施
- 2025公司員工試用期合同(范本)
- 第十章皮膚軟組織擴(kuò)張術(shù)醫(yī)學(xué)美容教研室袁曉野講解
- 2025年冷鏈物流產(chǎn)品配送及倉儲管理承包合同3篇
- 2024年青島遠(yuǎn)洋船員職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024-2025學(xué)年成都高新區(qū)七上數(shù)學(xué)期末考試試卷【含答案】
- 浙教版2023小學(xué)信息技術(shù)六年級上冊《人機(jī)對話的實(shí)現(xiàn)》說課稿及反思
評論
0/150
提交評論