1.什么是Ajax呢勒叠?
Ajax是Asynchronous JavaScript and XML的縮寫,核心是通過XMLHttpRequest對象進行異步獲取的方法职抡,向服務器發(fā)送數(shù)據(jù)請求葬燎,通過這個對象進行接收請求返回的數(shù)據(jù)。
jquery中的load()方法,進行獲取異步數(shù)據(jù)萨蚕。
load(url,[data],[callback]);
$.getJSON(url,[data],[callback]);$.getJSON("xxx.json",function(data){$.each(data,function(InfoIndex,Info){// 顯示})})
通過全局函數(shù)getJSON()可以獲取.json格式的文件內(nèi)容
2.關(guān)于全局函數(shù)中的getScript()
通過全局函數(shù)getScript()可以獲取.js文件內(nèi)容
$.getScript(url,[callback])// 加載的js文件地址 和 加載成功時執(zhí)行的回調(diào)函數(shù)
<script type="text/javascript">
? ? ?$(function(){
? ? ? ? ? $("#btn").click(function(){
? ? ? ? ? ? ? ? ?$.getScript("User.js");
? ? ?}) })
</script>
$.getScript("User.js",function(){alert("加載成功");});
3.全局函數(shù)get()靶草?
$.get(url,[data],[callback],[type])異步獲取xml文檔數(shù)據(jù)
$.get()請求數(shù)據(jù)
4.安全請求數(shù)據(jù)
$.post()請求數(shù)據(jù)
$.post(url,[data],[callback],[type]);
5.序列化表單效果
serialize()方法
<scripttype="text/javascript">
? ? ? $("#btn").click(function(){??
? ? ? ? ? ? $.post("User.aspx", $("#formUser").serialize(),?
? ? ? ? ? ? ? ? ? function(data) {? ? $("div").empty.html(data);? })?
? ? ? })
</script>
6.底層方法$.ajax()?
$.ajax([options]);
$.ajaxSetup([options]);
ajaxSuccess(callback) ajax請求成功時執(zhí)行
ajaxStop(callback) ajax請求結(jié)束時執(zhí)行
ajaxStart(callback) ajax請求開始時執(zhí)行
ajaxComplete(callback) ajax請求完成時執(zhí)行函數(shù)
ajaxError(callback) ajax請求發(fā)送錯誤時執(zhí)行函數(shù)
ajaxSend(callback) ajax請求發(fā)送前執(zhí)行函數(shù)
7.ajax常用參數(shù)說明
$.ajax({url,type,data,dataType,beforeSend,success,error})
8.ajax的最大特點是什么
Ajax可以實現(xiàn)動態(tài)不刷新(局部刷新)
就是能在不更新整個頁面的前提下維護數(shù)據(jù)。這使得Web應用程序更為迅捷地回應用戶動作岳遥,并避免了在網(wǎng)絡上發(fā)送那些沒有改變過的信息奕翔。
9.ajax的優(yōu)缺點
優(yōu)點
1、最大的一點是頁面無刷新浩蓉,用戶的體驗非常好派继。
2、使用異步方式與服務器通信捻艳,具有更加迅速的響應能力驾窟。
3、可以把以前一些服務器負擔的工作轉(zhuǎn)嫁到客戶端认轨,利用客戶端閑置的能力來處理绅络,減輕服務器和帶寬的負擔,節(jié)約空間和寬帶租用成本嘁字。并且減輕服務器的負擔恩急,ajax的原則是“按需取數(shù)據(jù)”,可以最大程度的減少冗余請求纪蜒,和響應對服務器造成的負擔衷恭。
4、基于標準化的并被廣泛支持的技術(shù)纯续,不需要下載插件或者小程序随珠。
缺點
1、ajax不支持瀏覽器back按鈕猬错。
2窗看、安全問題 AJAX暴露了與服務器交互的細節(jié)。
3倦炒、對搜索引擎的支持比較弱烤芦。
4、破壞了程序的異常機制析校。
10.ajax請求時构罗,如何解釋json數(shù)據(jù)
1.直接定義返回數(shù)據(jù)類型為json,
????$.ajax({
???????? url:"",
???????? dataType:"json"
????});
然后請求成功后返回的數(shù)據(jù)就是json數(shù)據(jù),
2.直接使用JSON.parse ()
11. ajax請求的時候get 和post方式的區(qū)別和localStorage跟sessionStorage的區(qū)別智玻?
get 和post方式的區(qū)別
get是把參數(shù)數(shù)據(jù)隊列加到提交表單的action屬性所指的URL中遂唧,值和表單內(nèi)各個字段一一對應,在URL中可以看到吊奢。
post是通過HTTP post機制盖彭,將表單內(nèi)各個字段與其內(nèi)容放置在html header內(nèi)一起傳送到action屬性所指的URL地址纹烹。
用戶看不到這個過程。
2召边、 對于get方式铺呵,服務器端用Request.QueryString獲取變量的值,對于post方式隧熙,服務器端用Request.Form獲取提交的數(shù)據(jù)片挂。
兩種方式的參數(shù)都可以用Request來獲得。
3贞盯、get傳送的數(shù)據(jù)量較小音念,不能大于2KB。post傳送的數(shù)據(jù)量較大躏敢,一般被默認為不受限制闷愤。但理論上,因服務器的不同而異.
4件余、get安全性非常低讥脐,post安全性較高
總而言之post是把數(shù)據(jù)傳輸?shù)紿TTP中? 而get是把數(shù)據(jù)傳輸?shù)絬rl中
如果傳輸?shù)臄?shù)據(jù)比較大用post數(shù)據(jù)小于2kb時用post傳值
localStorage跟sessionStorage的區(qū)別 ?
1 本地存儲localStorage是在手機端存儲了一些數(shù)據(jù)啼器,其實這些數(shù)據(jù)就是寫在你手機里了旬渠,而sessionStorage是寫在服務器里的,
2 它們兩個都是變量镀首,只不過一個是存在你手機里的,另一個是存在服務器里的鼠次,這就是它們大概的意思更哄,
3 但是它們主要用在什么地方呢?比如本地存儲localStorage腥寇,當我們點贊時成翩,有5顆星 ,那么此時這個5就會被存儲起來赦役,再次刷時還是5顆星麻敌,
還有我們的登錄狀態(tài),有個是否記住密碼掂摔,那么我們登錄一次之后术羔,事實上,它就是把用戶名乙漓,密碼存儲在本地的localStorage中了级历,
那么下次來,它首先是從localStorage中檢測你用戶名叭披,密碼在不在寥殖,如果在,那就直接添加到上面的input中了,那這樣嚼贡,只用點登錄就進去了熏纯。
所以localStorage主要就是存儲一些數(shù)據(jù)的,
4 sessionStorage就不一樣了粤策,sessionStorage是在服務器里為你保存數(shù)據(jù)樟澜,比如你登錄一次,你在服務器那端掐场,不管你訪問多少個頁面往扔,
都會顯示你是登錄狀態(tài)。只要是在它們網(wǎng)站熊户,就都有這個登錄狀態(tài)萍膛,這就是因為你登錄了一次之后,它在服務器那邊嚷堡,創(chuàng)建了一些數(shù)據(jù)蝗罗,存儲到sessionStorage里面了,
那后面所有的頁面都檢測sessionStorage里面的數(shù)據(jù)蝌戒,有串塑,那就是登錄狀態(tài),沒有北苟,則就是沒有登錄桩匪,另外,還有像網(wǎng)頁的瀏覽人次那個計數(shù)器友鼻,本條評論有多少人瀏覽或者點贊傻昙,
這些數(shù)據(jù)都是存在sessionStorage或localStorage中的。
12.什么是ajax和JSON彩扔,它們的優(yōu)缺點
Ajax就是支持異步請求,用戶體驗較為良好的一門技術(shù)
JSON就是一種簡單的文本格式
ajax
優(yōu)點:
????1.頁面無刷新,在頁面內(nèi)與服務器通信,用戶體驗非常好
????2.基于標準化的并被廣泛支持的技術(shù)
缺點:
????1.ajax干掉了back按鈕
????2.安全問題
????3.搜索引擎較弱
????4.破壞了程序的異常機制
????5.如果用戶禁用了JS就找不到數(shù)據(jù)了
JSON
優(yōu)點:
????1.數(shù)據(jù)格式比較簡單,易于讀寫
????2.易于解析
????3.支持多種語言
缺點:
????1.沒有XML格式推廣的那么廣泛
13.簡述ajax的過程
getData(url,?fn)?{
????//?實例化XMLHttpRequest對象
????var xhr?=?new?XMLHttpRequest();
????//?監(jiān)聽狀態(tài)
????xhr.onreadystatechange?=?()?=>?{
????//?數(shù)據(jù)請求完畢? ? ? ? ? ? ?判斷狀態(tài)碼
????????if?(xhr.readyState?===?4&&xhr.status?===?200)?{
????????????//?將數(shù)據(jù)轉(zhuǎn)化成json在妆档、數(shù)組
????????????fn?&&?fn(JSON.parse(xhr.responseText))
????????????}
????????}
????????//?打開數(shù)據(jù)請求???請求方式,路徑虫碉,同步false 異步true(默認)
????xhr.open('get/post',?"路徑",?"true/false");
????//?發(fā)送數(shù)據(jù)
????????xhr.send(null)
????}
14.解釋jsonp的原理贾惦,以及為什么不是真正的ajax
ajax和jsonp的調(diào)用方式很像,目的一樣敦捧,都是請求url须板,然后把服務器返回的數(shù)據(jù)進行處理,因此jquery和ext等框架都把jsonp作為ajax的一種形式進行了封裝兢卵;
ajax的核心是通過xmlHttpRequest獲取非本頁內(nèi)容jsonp的核心是動態(tài)添加script標簽調(diào)用服務器提供的js腳本(后綴.json)??
區(qū)別聯(lián)系不在于是否跨域ajax通過服務端代理一樣跨域jsonp也不并不排斥同域的數(shù)據(jù)的獲取
jsonp是一種方式或者說非強制性的協(xié)議ajax也不一定非要用json格式來傳遞數(shù)據(jù)
jsonp只支持get請求逼纸,ajax支持get和post請求
15.什么是AJAX,為什么要使用Ajax(請談一下你對Ajax的認識)
AJAX是“Asynchronous JavaScript and XML”的縮寫济蝉。他是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術(shù)杰刽。
Ajax包含下列技術(shù):
基于web標準(standards-basedpresentation)XHTML+CSS的表示菠发;
使用 DOM(Document ObjectModel)進行動態(tài)顯示及交互;
使用 XML 和 XSLT 進行數(shù)據(jù)交換及相關(guān)操作贺嫂;
使用 XMLHttpRequest 進行異步數(shù)據(jù)查詢滓鸠、檢索;
使用 JavaScript 將所有的東西綁定在一起第喳。
16.為什么要用ajax:
Ajax應用程序的優(yōu)勢在于:
通過異步模式糜俗,提升了用戶體驗
優(yōu)化了瀏覽器和服務器之間的傳輸,減少不必要的數(shù)據(jù)往返曲饱,減少了帶寬占用
Ajax引擎在客戶端運行悠抹,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載扩淀。
17.請介紹一下XMLhttprequest對象楔敌。
Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入驻谆,它是一種支持異步請求的技術(shù)卵凑。簡而言之,XmlHttpRequest使您可以使用JavaScript向服務器提出請求并處理響應胜臊,而不阻塞用戶勺卢。通過XMLHttpRequest對象,Web開發(fā)人員可以在頁面加載以后進行頁面的局部更新象对。
18.AJAX技術(shù)體系的組成部分有哪些黑忱。
HTML,css勒魔,dom甫煞,xml,xmlHttpRequest沥邻,javascript
19.AJAX應用和傳統(tǒng)Web應用有什么不同危虱。
在傳統(tǒng)的Javascript編程中羊娃,如果想得到服務器端數(shù)據(jù)庫或文件上的信息唐全,或者發(fā)送客戶端信息到服務器,需要建立一個HTML form然后GET或者POST數(shù)據(jù)到服務器端蕊玷。用戶需要點擊”Submit”按鈕來發(fā)送或者接受數(shù)據(jù)信息邮利,然后等待服務器響應請求,頁面重新加載垃帅。
因為服務器每次都會返回一個新的頁面延届, 所以傳統(tǒng)的web應用有可能很慢而且用戶交互不友好。
使用AJAX技術(shù)贸诚, 就可以使Javascript通過XMLHttpRequest對象直接與服務器進行交互方庭。
通過HTTP Request厕吉, 一個web頁面可以發(fā)送一個請求到web服務器并且接受web服務器返回的信息(不用重新加載頁面),展示給用戶的還是通一個頁面械念,用戶感覺頁面刷新头朱,也看不到到Javascript后臺進行的發(fā)送請求和接受響應。
20.AJAX請求總共有多少種CALLBACK龄减。
Ajax請求總共有八種Callback
onSuccess? onFailure? onUninitialized? onLoading? onLoaded? onInteractive? onComplete? onException
21.Ajax和javascript的區(qū)別项钮。
javascript是一種在瀏覽器端執(zhí)行的腳本語言,Ajax是一種創(chuàng)建交互式網(wǎng)頁應用的開發(fā)技術(shù) 希停,它是利用了一系列相關(guān)的技術(shù)其中就包括javascript烁巫。
Javascript是由網(wǎng)景公司開發(fā)的一種腳本語言,它和sun公司的java語言是沒有任何關(guān)系的宠能,它們相似的名稱只是一種行銷策略亚隙。
在一般的web開發(fā)中,javascript是在瀏覽器端執(zhí)行的棍潘,我們可以用javascript控制瀏覽器的行為和內(nèi)容恃鞋。
在 Ajax應用中信息是如何在瀏覽器和服務器之間傳遞的
通過XML數(shù)據(jù)或者字符串
22.在瀏覽器端如何得到服務器端響應的XML數(shù)據(jù)。
XMLHttpRequest對象的responseXMl屬性
23. XMLHttpRequest對象在IE和Firefox中創(chuàng)建方式有沒有不同亦歉。
有恤浪,IE中通過new ActiveXObject()得到,F(xiàn)irefox中通過newXMLHttpRequest()得到
24.介紹一下XMLHttpRequest對象的常用方法和屬性肴楷。
open(“method”,”URL”) 建立對服務器的調(diào)用水由,第一個參數(shù)是HTTP請求? ? 方式可以為GET,POST或任何服務器所支持的您想調(diào)用的方式赛蔫。
第二個參數(shù)是請求頁面的URL砂客。
send()方法,發(fā)送具體請求
abort()方法呵恢,停止當前請求
readyState屬性? 請求的狀態(tài) 有5個可取值
0=未初始化 鞠值,1=正在加載? ?2=以加載,3=交互中渗钉,4=完成
responseText 屬性? 服務器的響應彤恶,表示為一個串
reponseXML 屬性 服務器的響應,表示為XML
status? 服務器的HTTP狀態(tài)碼鳄橘,200對應ok? 400對應not found
25.什么是XML
XML是擴展標記語言声离,能夠用一系列簡單的標記描述數(shù)據(jù)
26.XML的解析方式
常用的用dom解析和sax解析。dom解析是一次性讀取xml文件并將其構(gòu)造為DOM對象供程序使用瘫怜,優(yōu)點是操作方便术徊,但是比較耗內(nèi)存。Sax是按事件驅(qū)動的方式解析的鲸湃,占用內(nèi)存少赠涮,但是編程復雜
27.你采用的是什么框架(架包)
這題是必問的子寓,一般也是最開始就會問到。
在java中比較流行的有 dojo, Prototype , JQuery, Dwr, extjs? 等等
?28.如果熟悉某種ajax框架笋除,他可能會問到怎樣在程序中使用這種框架
DWR框架介紹
DWR(DirectWeb Remoting)是一個WEB遠程調(diào)用框架.利用這個框架可以讓AJAX開發(fā)變得很簡單.利用DWR可以在客戶端利用JavaScript直接調(diào)用服務端的Java方法并返回值給JavaScript就好像直接本地客戶端調(diào)用一樣(DWR根據(jù)Java類來動態(tài)生成JavaScrip代碼).
DWR的實現(xiàn)原理是通過反射别瞭,將java翻譯成javascript,然后利用回調(diào)機制株憾,從而實現(xiàn)了javascript調(diào)用Java代碼
29.介紹一下Prototype的$()函數(shù)蝙寨,$F()函數(shù),$A()函數(shù)都是什么作用
$() 方法是在DOM中使用過于頻繁的document.getElementById() 方法的一個便利的簡寫嗤瞎,就像這個DOM方法一樣墙歪,這個方法返回參數(shù)傳入的id的那個元素。
$F()函數(shù)是另一個大收歡迎的“快捷鍵”贝奇,它能用于返回任何表單輸入控件的值虹菲,比如textbox,drop-down list。這個方法也能用元素id或元素本身做為參數(shù)掉瞳。
$A()函數(shù)能把它接收到的單個的參數(shù)轉(zhuǎn)換成一個Array對象毕源。
30.介紹一下XMLHttpRequest對象
通過XMLHttpRequest對象,Web開發(fā)人員可以在頁面加載以后進行頁面的局部更新陕习。
AJAX開始流行始于Google在2005年使用的”Google Suggest”霎褐。
“Google Suggest”就是使用XMLHttpRequest對象來創(chuàng)建動態(tài)的Web接口:
當用戶開始輸入google的搜索框,Javascript發(fā)送用戶輸入的字符到服務器该镣,然后服務器返回一個建議列表冻璃。
XMLHttpRequest對象在IE5.0+, Safari 1.2, Mozilla1.0/Firefox, Opera 8+ 和NetScapt7 開始被支持。
31.AJAX的全稱是什么损合? 介紹一下AJAX省艳?
AJAX的全稱是Asynchronous JavaScript And XML.
AJAX是2005年由Google發(fā)起并流行起來的編程方法, AJAX不是一個新的編程語言嫁审,但是它是一個使用已有標準的新的編程技術(shù)跋炕。
使用AJAX可以創(chuàng)建更好,更快律适,更用戶界面友好的Web應用辐烂。
AJAX技術(shù)基于Javascript和HTTP Request.
32.Ajax主要包含了哪些技術(shù)?
Ajax(Asynchronous JavaScript + XML)的定義
基于web標準(standards-based presentation)XHTML+CSS的表示擦耀;
使用 DOM(Document Object Model)進行動態(tài)顯示及交互棉圈;
使用 XML 和 XSLT 進行數(shù)據(jù)交換及相關(guān)操作涩堤;
使用XMLHttpRequest 進行異步數(shù)據(jù)查詢眷蜓、檢索;
使用 JavaScript 將所有的東西綁定在一起胎围。英文參見Ajax的提出者Jesse James Garrett的原文,原文題目(Ajax: A New Approach to Web Applications)吁系。
類似于DHTML或LAMP德召,AJAX不是指一種單一的技術(shù),而是有機地利用了一系列相關(guān)的技術(shù)汽纤。事實上上岗,一些基于AJAX的“派生/合成”式(derivative/composite)的技術(shù)正在出現(xiàn),如“AFLAX”蕴坪。
AJAX的應用使用支持以上技術(shù)的web瀏覽器作為運行平臺肴掷。這些瀏覽器目前包括:Mozilla、Firefox背传、Internet Explorer呆瞻、Opera、Konqueror及Safari径玖。但是Opera不支持XSL格式對象痴脾,也不支持XSLT。