㈠ 回調函數和普通函數有什麼區別
普通函數與回調函數主要是在調用方式上有區別:
1、對普通函數的調用:調用程序發出對普通函數的調用後,程序執行立即轉向被調用函數執行,直到被調用函數執行完畢後,再返回調用程序繼續執行。從發出調用的程序的角度看,這個過程為「調用-->等待被調用函數執行完畢-->繼續執行」。
2、對回調函數調用:調用程序發出對回調函數的調用後,不等函數執行完畢,立即返回並繼續執行。這樣,調用程序執和被調用函數同時在執行。當被調函數執行完畢後,被調函數會反過來調用某個事先指定函數,以通知調用程序:函數調用結束。這個過程稱為回調(Callback),這正是回調函數名稱的由來。
一般函數(General function)是相對於比較特殊,比較少見的函數而言的,在任一學科內,指的是作用能力比較基層,使用比較普遍的函數,但同時它也是構成某整個作用域中不可缺少的元素。列如:c語言中的printf(),scanf()函數就是c語言中的一般函數,它們用於各類數據輸出和輸入,是很常用的的庫函數,基礎但很重要。
㈡ 什麼是技術面需要回調
技術面需要回調的是:
1.1 Bindows (成立於2003年)
Backbase是一個通過DHTML、JavaScript、CSS和HTML等技術強勁聯合起來的一套完整的Windows桌面式的WEB應用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如Java、ActiveX或Flash),僅需一個瀏覽器。純OO的理念體現在Bindows任何地方,Bindows或許是筆者見過的最完整最強大的AJAX應用程序平台。
Bindows是商業程序的,使用了來自於MB的技術(總部位於GA USA,主要開發中心在瑞典,成立於2002年)。
Bindows框架提供的功能和特性有:
基於面相對象技術的類和API
一套完整的Windows桌面系統,支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
是開發zero-footprint(零空間佔用)SOA客戶端應用程序首選工具包
本機的XML,SOAP和XML-RPC支持
單用戶到企業級開發的支持
內建的完美的AJAX支持
Bindows開發環境:
支持企業級規模的項目開發
跨瀏覽器、跨OS平台的支持
不受伺服器結構限制
良好的與新的、現有的資源互操作性
統一的開發介面
1.2 BackBase (成立於2003年)
BackBase是一個完整的瀏覽器端框架,提供了豐富的瀏覽器操作功能,以及對.NET和JAVA平台的集成。
商業化產品,來自於Backbase B.V(總部在Amsterdam,成立於2003年)。
1.3 DOJO (開發中,成立於2004年9月)
DOJO提供完整的輕量級窗口組件和瀏覽器-伺服器消息映射支持
提供創建自定義Javascript窗口組件的框架支持
預制的豐富的窗口類型庫
B/S消息映射支持——XMLHttpRequest和其他機制
支持瀏覽器中的URL操縱功能
開源許可(Academic Free License 2.1),由JotSpot的Alex Russell所領導。
1.4 Open Rico (開發中;成立於2005年5月;基於早期的一個proprietary 框架)
Open Rico是一個支持Ajax架構和用戶交互的多用途框架。
一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。
支持拖拽操作
支持基於AJAX的動畫模式,如縮放和變換等
基於Behaviors的操作庫
使用指南,由RussMirimar的Yonah提供
開源。源於Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護。
1.5 qooxdoo (開發中; 成立於2005年5月)
qooxdoo,是另一個發展迅猛的應用框架,提供廣泛的UI支持,正在開發基礎架構等特性。
基礎結構特性:
能輕易的捕獲和操縱DOM事件
支持調試
支持一個時間操作的Timer類
Getter/Setter支持
UI:
窗口組件庫和框架
界面布局管理
圖像緩存和透明PNG圖片處理
開源(LGPL).
1.6 Tibet (開發中; 創建於2005年6月)
Tibet提供了大量的易移植和完整的JavaScript API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業級AJAX。
遠程腳本調用封裝在XMLHttpRequest中
URI支持
支持所有的HTTP事件,不再僅僅是GET和POST
低級的協議-File://和WebDav也可以當作HTTP正常使用
Web Services調用支持,包括SOAP、XML-RPC等等
大型的Javascript對象庫
多種多樣的XML操作支持
IDE和開發工具
開源協議(OSI)
1.7 AJFORM (創建於2005年6月)
AJFORM是一個極易上手的AJAX框架,被用來編寫入門級的AJAX代碼,提供有以下功能:
三步安裝
自動支持任意HTML表單元素
幾乎無需編碼即可實現AJAX
2 Pure Javascript: Infrastructural Frameworks
2.1 AjaxCaller(創建於2005年5月,目前是Alpha版)
AjaxCaller是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發新手,目前仍處於alpha開發階段,僅在AjaxPatterns的在線搜索範例中使用了這個程序。
用明文或者XML結構的數據實現和伺服器的交互(GET/POST/PUT/DELETE)
支持XMLHttRequest對象的構析(銷毀對象,C++支持內存對象的構析操作)
支持Response的高速緩存(尚在計劃中)
簡單的庫文件代碼易於新手學習使用,並且支持腳本調試
開源協議
2.2 Flash JavaScript Integration Kit
The Flash JavaScript Integration Kit可以使Flash和Javascript腳本實現相互集成。
可以實現在JavaScript中調用Flash ActionScript腳本,反之亦然。
幾乎支持雙方主要數據類型的在不同環境中的傳遞調用。
開源協議,有幾個Flash開源愛好者維護。
2.3 Google AJAXSLT (2005年6月發行)
Google AJAXSLT,是一個Javascript框架,用來執行XSLT轉換以及XPath查詢。
目前在Google Map上就使用了這個。
開源協議(BSD)
2.4 HTMLHttpRequest(Beta版;創建於2005年)
HtmlHttpRequest最大的特點就是運用XMLHttpRequest對象和標准HTML標簽IFrame來實現最大限度的跨瀏覽跨平台的AJAX支持,其原理是在支持XMLHttpRequest的瀏覽器上調用XMLHttp,如果不支持,就用IFrame來模擬實現非同步交互。
目前支持的瀏覽器:IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac
尚未測試的瀏覽器:IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。
開源協議(LGPL)
2.5 Interactive Website Framework (創建於2005年)
Interactive Website Framework定位在瀏覽器中支持各種各樣的AJAX基礎應用的開源項目。自稱是通過JavaScript、CSS、XML和HTML實現高性能的互動式WEB框架,包括一個可定製易讀的XML解析器。實際上,IWF是一個AJAX的基礎框架,並且還包括一些通用腳本代碼。
實現了線程安全的XMLHttpRequest
對XML Document進行封裝,以便創建更具有可讀性的代碼:
var node = doc.groceries.frozen[0].pizza[0].size;
封裝後的數據讀取
var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
原始的DOM操作讀取
開源協議
2.6 LibXMLHttpRequest (2003年6月發布)
libXmlRequest是一個小型XMLHttpRequest封裝包
用getXML()和postXML()兩個事件簡化XMLHttpReuqest調用
支持XMLHttpRequest對象池
Response緩存處理
源碼可以使用,但是有版權保護。
2.7 MAJAX
MAJAX是另一個非常小巧的HttpRequest封裝包,為收發字元型信息提供簡單介面,並為每步動作設置回調界面。
2.8 RSLite (x)
RSLite是一個XMLHttpRequest封裝組件,作為Brent Ashley的JSRS(JavaScript Remote Scripting)其中的一部分功能單獨發布。詳情可以看JSRS的介紹
2.9 Sack(開發中,成立於2005年5月)
Sack也是一個很有名字的微型XMLHttpRequest封裝包。調用者可以自定義回調函數或者是DOM對象。藉助於回調DOM對象,可以把Response回來的數據直接以文本的方式嵌入DOM中。
2.10 Sarissa (發布於2003年2月)
Sarissa是一個JavaScript API,封裝了在瀏覽器端獨立調用XML的功能。
可移植的XMLHttpRequest對象創造
可移植的XPath查詢
可移植的DOM操控
可移植的XSLT
可移植的XML序列化
開源協議(GPL2.0和LGPL2.1)
2.11 XHConn (2005年4月發布)
XHConn也是一個小型的XMLHttpRequest封裝庫。筆者也使用改良過的XHConn,其特點就是調用簡單,代碼也清晰易讀。
例子:
new XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
開源協議許可
3 Server-Side: Multi-Language
3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月)
CPAINT是一個真正的同時支持PHP和ASP/VBScript腳本的AJAX和JSRS工具包。CPAINT在後台提供你需求的AJAX和JSRS代碼,並自動返回到瀏覽器端相應的Javascript腳本代碼,這種方式易於實時反饋需求的WEB應用程序。
支持PHP和ASP
所有功能函數都在統一的JavaScript文件中
支持遠程腳本和XML
支持本地和遠程函數調用
可以創建單個或多個XMLHttp對象
返回給後台的數據即可以是文本也可以是XML/DOM文檔對象
支持POST和GET
用服務端代理的方式實現遠程函數和數據的訪問操作
大部分瀏覽器中測試正常使用
在GNU、GPL、LGPL開源協議保護下發行
3.2 SAJAX (2005年3月)
SAJAX的實現方式很獨特,例如:調用一個javascript方法x_calculateBudget(),將先把響應傳到伺服器並調用一個Java calculateBudget()方法,然後以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名氣不錯,估計很多人都聽過甚至用過,不過缺點就是它的這套映射理論感覺較繁鎖,遠不如一些輕量級的封裝庫好用,不過SAJAX最大的特點就是支持的平台豐富,幾乎囊括了WEB下常用的編程語言和平台
很方便從JavaScript函數映射到服務端代理操作
支持多種平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
開源協議
3.3 Javascipt Object Notation (JSON) and JSON-RPC
JSON是一個"face-free" XML,而JSON-RPC是一種遠程交互協議,類似於XML-RPC,對JavaScript支持較強
支持多服務端平台: Java, Python, Ruby, Perl.
針對不同的平台有不同的包和許可協議, 如JSON-RPC-Java.
3.4 JavaScript Remote Scripting(JSRS)(2000年)
JSRS,較經典的遠程腳本訪問組件,支持將客戶端數據通過伺服器做代理進行遠程的數據/操作交互。
支持的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
伺服器端腳本語言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
開源協議。由Brent Ashley提供支持。
3.5 Bitkraft for ASP.NET
Bitkraft是個基於(.NET)Web框架的CLR(公共語言運行庫),允許用獨特的方式創建和操作分布式Web內容。用C#編寫,運行在微軟的.NET 1.1和Mono框架下,無縫式的客戶端-伺服器響應方式是它的最大特點。Bitkraft沒有使用XML組織數據,而是用JSON代替。
支持的瀏覽器: IE5+, Firefox1+, NS6
伺服器端要求:ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+
事件驅動
支持同步和非同步的遠程代理
客戶端支持所有的.NET類型或自定義類對象映射到JSON中
用JSON取代XML
免費,開源許可協議
4 Server-Side: Java
4.1 WebORB for Java (2005年8月)
WebORB for Java是一個開發AJAX和基於Flash的富客戶端應用程序的開發平台。在線例子
WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何Java對象、XML Web Services和EJB
支持非同步或同步的事件驅動
不需要在服務端修改任何代碼,不需要自定義方法或屬性、變數等。不要求設計時指定代理等。
同步調用不需要回調,非同步調用需要一個回調方法。
客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變為狀態。
提供一個特定API來處理資料庫查詢結果-伺服器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
目前有兩個版本:標准版(免費),專業版(商業許可)
4.2 Echo 2 (2005年3月)
Echo 2允許你用純Java語言編寫AJAX程序。 Demo.
自動生成HTML和Javascript代碼
用XML在客戶端-服務端傳遞消息
如果願意支持自定義Javascript組件
開源協議(Mozilla Public License or GNU LGPL)
4.3 Direct Web Remoting (DWR) (2005)
Direct Web Remoting可以在Javascript代碼中直接調用Java方法的應用框架
類似於SAJAX,可以把Javascript中的請求調用轉遞到Java方法中並將執行結果返回給Javascript
可以和任何Web框架一起使用,如Struts、Tapestry等等
開源(Apache),目前該產品被加入到WebWork中
4.4 SWATO (2005)
SWATO是一套可重用的和良好集成的Java/JavaScript庫,它實現了一種更容易的方式來改變你的web應用程序的交互,通過AJAX方式實現。
服務端Java庫可以非常容易的部署到所有Servlet2.3+兼容的容器中
客戶端Javascript庫可以在所有支持XMLHttpRequest的瀏覽器中使用
使用JSON技術在服務端組織POJO數據,這樣你可以在任何Javascript環境中(HTML、XUL、SVG)訪問這些遠程數據,這種方式很容易通過硬編碼或者某種成熟的Javascript庫集成到當前應用中
提供一個簡單介面使你能在Javascript中調用遠程的POJO數據
使用和靈活的在web.xml中進行配置,並且可以集成(不是必須)到你的Spring框架中
提供了幾個可幫助你快速開發web應用程序的組件(如自動完成的文本框,在線表單,在線列表等等)
4.5 AJAX JSP Tag Library
The AJAX JSP Tag Library是一組JSP標簽庫,用來AJAX程序開發。可以在J2EE下無需Javascript就能輕松開發AJAX模式的Web Form。標簽庫為比較通用的AJAX功能提供了5個標簽:
autocomplete: 用戶在文本框中輸入字元,自動從指定的數據中匹配用戶輸入的字元,類似於Google Suggest
callout:可以為A標簽加入氣泡式的消息提示框,不過是實時的服務端取出數據
Select/dropdown:類似於聯動菜單,比如地州市的聯動下拉框
toggle:開關閘按鈕,比如在一個hidden表單域中存儲true和falsh,同時顯示相應的img圖像
update field:更新數據,也就是無刷新提交了。
4.6 AJAX Java Server Faces Framework
The AJAX-JSF用來把任意的JSF應用程序轉變為AJAX應用程序
例子:AJAX組件的 MyFaces JSF Tree(樹型目錄), table scroller(可滾動的表格), tabbed pane(分頁欄)
開源協議(Apache Software License)
Server-Side: Lisp
5.1 CL-Ajax
CL-Ajax實現Javascript直接調用服務端Lisp
生成可帶參數的函數
可以回調Javascript函數或者DOM對象
可以集成到SAJAX中
開源許可
6 Server-Side: .NET
6.1 WebORB for .NET (2005年8月)
WebORB for .NET是一個用.NET和XML Web Services方式開發AJAX和基於Flash的富客戶端應用程序(在線例子)
WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何.NET對象、XML Web Services
支持非同步或同步的事件驅動
不需要在服務端修改任何代碼,不需要自定義方法或屬性、變數等。不要求設計時指定代理等。
同步調用不需要回調,非同步調用需要一個回調方法。
客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變為狀態。
提供一個特定API來處理資料庫查詢結果-伺服器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
目前有兩個版本:標准版(免費),專業版(商業許可)
6.2 Ajax.NET (2005年3月)
Ajax.NET是首家支持各種方式通過Javascript訪問服務端.net的免費庫
類似於SAJAX,能把Javascript請求發送到.NET方法,服務端回傳給Javascript,甚至包括串列化自定義類。
可以在Javascript中訪問Session和Application數據
緩存查詢結果
免費使用源代碼
無需更改源代碼,允許給Ajax.NET添加和修改方法和屬性
所有類支持Javascript客戶端返回數據,可以在JavaScript中使用DataSet:res.Tables[0].Rows
使用HtmlControls組件訪問和返回數據
頁面無需重載,用事件代理(數據訪問層)
因為只提供一個調用介面方法,所以服務端CPU佔用非常少
6.3 ComfortASP.NET (2005年8月)
ComfortASP.NET可以讓開發者在純.NET下開發類似AJAX(DHTML,JavaScript,XMLHttp)特性的應用程序。
快速應答
減少HTML傳輸
減少頁面重載
無閃爍的瀏覽器內容更改
AJAX用戶體驗,
6.4 AjaxAspects (2005年8月)
AjaxAspects是個可以用Javascript調用服務端WebService事件的引擎
用標準的SOAP和WSDL進行服務端-客戶端通信
用簡單的類型和XML對象支持帶參數的返回值
緩存支持
動作隊列
免費使用,開源協議
7 Server-Side: PHP
7.1 AjaxAC (2005年4月)
AjaxAC用一個單獨類封裝了完整的應用程序功能
所有的功能集成在自包含的類中(另外附帶一些Javascript庫)
調用PHP文件或者HTML頁面非常簡易,只需創建App類後把類引用傳遞給需要調用的Javascript對象或者HTML元素即可。
捕獲Javascript事件
可以自定義配置數據,並且支持運行時參數更改
無需再Javascript代碼中夾雜凌亂的Html代碼,所有事件都是被動態附加上的
由於以上兩個優點,所以支持良好的模版引擎
容易Hook到PHP類和MySql數據已返回給自己的request
能夠容易的用Javascript建立窗口模式應用程序。
7.2 JPSpan
JPSPAN通過Javascript直接調用PHP中的函數。
進行了嚴謹的單元測試
開源許可(PHP)
7.3 XAJAX
XAjax通過Javascript直接調用PHP中的函數
支持用Javascript調用PHP腳本
開源許可協議
8 Server-Side: Ruby
8.1 Ruby On Rails
Ruby On Rails是一個支持AJAX的完整Web框架,使用Ruby語言編寫,嚴格按照MVC結構開發。
當Ajax出現的時候Rails還處於其發展的早期,因此Ajax可能逐漸成為Rails框架的核心。
生成瀏覽器中大多數/全部的Window應用組件和動畫的Javascript腳本。
支持伺服器端調用。
隊列支持
開源許可
文章來源:http://tb.blog.csdn.net/TrackBack.aspx?PostId=655786
Ajax使用場合
既然你己經對Ajax產生了興趣,還要知道重要的一點,即什麼時候應該使用Ajax技術,而什麼時候不該用。首先,不要害怕在應用中嘗試新的方法。我們相信.幾乎每個web應用都能從Ajax技術中獲益,只不過不要矯杠過正,過於離譜就行了。從驗證開始就很合適,但是不要限制你的主動性。你當然可以使用Ajax提交數據,但也許不能把它作為提交數據的主要方法。
其次,惟一會影響你應用Ajax的就是瀏覽器問題。如果大量用戶(或者特別重要的用戶)還在使用比較舊的瀏覽器,如IE 5 , Safari 1.2或Mozilla 1.0之前的版本,Ajax技術就不能奏效。如果這是一些很重要的用戶,你就要使用針對目標用戶的跨瀏覽器的方法,而放棄Ajax,或者開發一個可以妥善降級的網站。瀏覽器支持可能不是一個重要因素,因為netscape Navigaxar 4在市場上的份額很小。不過,還是應該查看Web日誌,看看你的應用適用什麼技術。
如前所述,驗證和表單填寫就非常適合採用Ajax實現。還可以使用DOM的「拖」技術建立真正動態的網站,如google的個性化主頁.
可以看到,Ajax為Web應用開發提供了新的機會。你不會再因為以往的專用技術或技術折中方案而受到妨礙。利用Ajax,胖客戶與瘦客戶之間的界限不再分明,真正的贏家則是你的用戶。
聯系我們 廣告服務 京ICP備06016174號 友情連接 TJ
1. Pure Javascript: Application Frameworks
1.1 Bindows (成立於2003年)
Backbase是一個通過DHTML、JavaScript、CSS和HTML等技術強勁聯合起來的一套完整的Windows桌面式的WEB應用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如Java、ActiveX或Flash),僅需一個瀏覽器。純OO的理念體現在Bindows任何地方,Bindows或許是筆者見過的最完整最強大的AJAX應用程序平台。
Bindows是商業程序的,使用了來自於MB的技術(總部位於GA USA,主要開發中心在瑞典,成立於2002年)。
Bindows框架提供的功能和特性有:
基於面相對象技術的類和API
一套完整的Windows桌面系統,支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
是開發zero-footprint(零空間佔用)SOA客戶端應用程序首選工具包
本機的XML,SOAP和XML-RPC支持
單用戶到企業級開發的支持
內建的完美的AJAX支持
Bindows開發環境:
支持企業級規模的項目開發
跨瀏覽器、跨OS平台的支持
不受伺服器結構限制
良好的與新的、現有的資源互操作性
統一的開發介面
1.2 BackBase (成立於2003年)
BackBase是一個完整的瀏覽器端框架,提供了豐富的瀏覽器操作功能,以及對.NET和JAVA平台的集成。
商業化產品,來自於Backbase B.V(總部在Amsterdam,成立於2003年)。
1.3 DOJO (開發中,成立於2004年9月)
DOJO提供完整的輕量級窗口組件和瀏覽器-伺服器消息映射支持
提供創建自定義Javascript窗口組件的框架支持
預制的豐富的窗口類型庫
B/S消息映射支持——XMLHttpRequest和其他機制
支持瀏覽器中的URL操縱功能
開源許可(Academic Free License 2.1),由JotSpot的Alex Russell所領導。
1.4 Open Rico (開發中;成立於2005年5月;基於早期的一個proprietary 框架)
Open Rico是一個支持Ajax架構和用戶交互的多用途框架。
一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。
支持拖拽操作
支持基於AJAX的動畫模式,如縮放和變換等
基於Behaviors的操作庫
使用指南,由RussMirimar的Yonah提供
開源。源於Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護。
1.5 qooxdoo (開發中; 成立於2005年5月)
qooxdoo,是另一個發展迅猛的應用框架,提供廣泛的UI支持,正在開發基礎架構等特性。
基礎結構特性:
能輕易的捕獲和操縱DOM事件
支持調試
支持一個時間操作的Timer類
Getter/Setter支持
UI:
窗口組件庫和框架
界面布局管理
圖像緩存和透明PNG圖片處理
開源(LGPL).
1.6 Tibet (開發中; 創建於2005年6月)
Tibet提供了大量的易移植和完整的JavaScript API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業級AJAX。
遠程腳本調用封裝在XMLHttpRequest中
URI支持
支持所有的HTTP事件,不再僅僅是GET和POST
低級的協議-File://和WebDav也可以當作HTTP正常使用
Web Services調用支持,包括SOAP、XML-RPC等等
大型的Javascript對象庫
多種多樣的XML操作支持
IDE和開發工具
開源協議(OSI)
1.7 AJFORM (創建於2005年6月)
AJFORM是一個極易上手的AJAX框架,被用來編寫入門級的AJAX代碼,提供有以下功能:
三步安裝
自動支持任意HTML表單元素
幾乎無需編碼即可實現AJAX
2 Pure Javascript: Infrastructural Frameworks
2.1 AjaxCaller(創建於2005年5月,目前是Alpha版)
AjaxCaller是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發新手,目前仍處於alpha開發階段,僅在AjaxPatterns的在線搜索範例中使用了這個程序。
用明文或者XML結構的數據實現和伺服器的交互(GET/POST/PUT/DELETE)
支持XMLHttRequest對象的構析(銷毀對象,C++支持內存對象的構析操作)
支持Response的高速緩存(尚在計劃中)
簡單的庫文件代碼易於新手學習使用,並且支持腳本調試
開源協議
2.2 Flash JavaScript Integration Kit
The Flash JavaScript Integration Kit可以使Flash和Javascript腳本實現相互集成。
可以實現在JavaScript中調用Flash ActionScript腳本,反之亦然。
幾乎支持雙方主要數據類型的在不同環境中的傳遞調用。
開源協議,有幾個Flash開源愛好者維護。
2.3 Google AJAXSLT (2005年6月發行)
Google AJAXSLT,是一個Javascript框架,用來執行XSLT轉換以及XPath查詢。
目前在Google Map上就使用了這個。
開源協議(BSD)
2.4 HTMLHttpRequest(Beta版;創建於2005年)
HtmlHttpRequest最大的特點就是運用XMLHttpRequest對象和標准HTML標簽IFrame來實現最大限度的跨瀏覽跨平台的AJAX支持,其原理是在支持XMLHttpRequest的瀏覽器上調用XMLHttp,如果不支持,就用IFrame來模擬實現非同步交互。
目前支持的瀏覽器:IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac
尚未測試的瀏覽器:IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。
開源協議(LGPL)
2.5 Interactive Website Framework (創建於2005年)
Interactive Website Framework定位在瀏覽器中支持各種各樣的AJAX基礎應用的開源項目。自稱是通過JavaScript、CSS、XML和HTML實現高性能的互動式WEB框架,包括一個可定製易讀的XML解析器。實際上,IWF是一個AJAX的基礎框架,並且還包括一些通用腳本代碼。
實現了線程安全的XMLHttpRequest
對XML Document進行封裝,以便創建更具有可讀性的代碼:
var node = doc.groceries.frozen[0].pizza[0].size;
封裝後的數據讀取
var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
原始的DOM操作讀取
開源協議
2.6 LibXMLHttpRequest (2003年6月發布)
libXmlRequest是一個小型XMLHttpRequest封裝包
用getXML()和postXML()兩個事件簡化XMLHttpReuqest調
㈢ 使用了回調為什麼不用刷新頁面
ajax的優點
Ajax的給我們帶來的好處大家基本上都深有體會,在這里我只簡單的講幾點:
1、最大的一點是頁面無刷新,在頁面內與伺服器通信,給用戶的體驗非常好。
2、使用非同步方式與伺服器通信,不需要打斷用戶的操作,具有更加迅速的響應能力。
3、可以把以前一些伺服器負擔的工作轉嫁到客戶端,利用客戶端閑置的能力來處理,減輕伺服器和帶寬的負擔,節約空間和寬頻租用成本。並且減輕伺服器的負擔,ajax的原則是「按需取數據」,可以最大程度的減少冗餘請求,和響應對伺服器造成的負擔。
4、基於標准化的並被廣泛支持的技術,不需要下載插件或者小程序。
8、ajax的缺點
下面我著重講一講ajax的缺陷,因為平時我們大多注意的都是ajax給我們所帶來的好處諸如用戶體驗的提升。而對ajax所帶來的缺陷有所忽視。
下面所闡述的ajax的缺陷都是它先天所產生的。
1、ajax幹掉了back按鈕,即對瀏覽器後退機制的破壞。後退按鈕是一個標準的web站點的重要功能,但是它沒法和js進行很好的合作。這是ajax所帶來的一個比較嚴重的問題,因為用戶往往是希望能夠通過後退來取消前一次操作的。那麼對於這個問題有沒有辦法?答案是肯定的,用過Gmail的知道,Gmail下面採用的ajax技術解決了這個問題,在Gmail下面是可以後退的,但是,它也並不能改變ajax的機制,它只是採用的一個比較笨但是有效的辦法,即用戶單擊後退按鈕訪問歷史記錄時,通過創建或使用一個隱藏的IFRAME來重現頁面上的變更。(例如,當用戶在Google Maps中單擊後退時,它在一個隱藏的IFRAME中進行搜索,然後將搜索結果反映到Ajax元素上,以便將應用程序狀態恢復到當時的狀態。)
但是,雖然說這個問題是可以解決的,但是它所帶來的開發成本是非常高的,和ajax框架所要求的快速開發是相背離的。這是ajax所帶來的一個非常嚴重的問題。
2、安全問題
技術同時也對IT企業帶來了新的安全威脅,ajax技術就如同對企業數據建立了一個直接通道。這使得開發者在不經意間會暴露比以前更多的數據和伺服器邏輯。ajax的邏輯可以對客戶端的安全掃描技術隱藏起來,允許黑客從遠端伺服器上建立新的攻擊。還有ajax也難以避免一些已知的安全弱點,諸如跨站點腳步攻擊、SQL注入攻擊和基於credentials的安全漏洞等。
3、對搜索引擎的支持比較弱。
4、破壞了程序的異常機制。至少從目前看來,像ajax.dll,ajaxpro.dll這些ajax框架是會破壞程序的異常機制的。關於這個問題,我曾經在開發過程中遇到過,但是查了一下網上幾乎沒有相關的介紹。後來我自己做了一次試驗,分別採用ajax和傳統的form提交的模式來刪除一條數據……給我們的調試帶來了很大的困難。
5、另外,像其他方面的一些問題,比如說違背了url和資源定位的初衷。例如,我給你一個url地址,如果採用了ajax技術,也許你在該url地址下面看到的和我在這個url地址下看到的內容是不同的。這個和資源定位的初衷是相背離的。
6、一些手持設備(如手機、PDA等)現在還不能很好的支持ajax,比如說我們在手機的瀏覽器上打開採用ajax技術的網站時,它目前是不支持的,當然,這個問題和我們沒太多關系。
㈣ 第三方支付系統為什麼要進行支付回調
是由於價格上漲趨勢當中上漲速度太快導致的支付回調。
在第三方支付交易流程中,支付模式使商家看不到客戶的信用卡信息,同時又避免了信用卡信息在網路上多次公開傳輸而導致信用卡信息被竊。
通過第三方平台的交易中,買方選購商品後,使用第三方平台提供的賬戶進行貨款支付,由對方通知賣家貨款到達、進行發貨;買方檢驗物品後,就可以通知付款給賣家。
第三方支付平台的出現,從理論上講,徹底杜絕了電子交易中的欺詐行為,這也是由它的以下特點決定的。
除了網上銀行、電子信用卡等支付方式以外還有一種方式也可以相對降低網路支付的風險,那就是正在迅猛發展起來的利用第三方機構的支付模式及其支付流程,而這個第三方機構必須具有一定的誠信度。
在實際的操作過程中這個第三方機構可以是發行信用卡的銀行本身。在進行網路支付時,信用卡號以及密碼的披露只在持卡人和銀行之間轉移,降低了應通過商家轉移而導致的風險。
第三方是買賣雙方在缺乏信用保障或法律支持的情況下的資金支付「中間平台」,買方將貨款付給買賣雙方之外的第三方。
第三方提供安全交易服務,其運作實質是在收付款人之間設立中間過渡賬戶,使匯轉款項實現可控性停頓,只有雙方意見達成一致才能決定資金去向。
㈤ 什麼是JavaScript中的回調函數,作用是什麼
var req;
function validate() {
var idField = document.getElementById("userid");
var url = "Validate.jsp?id=" + encodeURI(idField.value);
init();
req.open("GET", url, true);
req.onreadystatechange = callback;
//callback就是回調函數,當觸發req.onreadystatechange時,調用callback獲取url傳回的東西
req.send(null);
}
function init() {
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function callback() {
if(req.readyState == 4) { //反饋回到客戶端
if(req.status == 200) { //反饋完全正常
//alert(req.responseText);
var msg = req.responseXML.getElementsByTagName("msg")[0];
//alert(msg);
setMsg(msg.childNodes[0].nodeValue);
}
}
}
function setMsg(msg) {// 頁面中的span <span id="usermsg"></span>
//alert(msg);
mdiv = document.getElementById("usermsg");
if(msg == "invalid") {
mdiv.innerHTML = "<font color='red'>username exists</font>";
} else {
mdiv.innerHTML = "<font color='green'>congratulations! you can use this username!</font>";
}
}
Validate.jsp
<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-store"); //HTTP1.1
response.setHeader("Pragma", "no-cache"); //HTTP1.0
response.setDateHeader("Expires", 0); //prevents catching at proxy server
System.out.println(request.getParameter("id"));
//check the database 可以先去資料庫取
response.getWriter().write("<msg>valid</msg>");//寫這個內容,隨便指定
%>
㈥ 「回傳」和「回調」是什麼意思
回傳
一. 使用QueryString變數
QueryString是一種非常簡單也是使用比較多的一種傳值方式,但是它將傳遞的值顯示在瀏覽器的地址欄中,如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。
Response.Redirect( "target.aspx?param1=hello¶m2=hi ")
接收頁面: string str = Request.QueryString["param1"];
string str1 = Request.QueryString["param2];
二.使用Cookie對象變數(Cookie是存放在客戶端的)
設置Cookie: HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
獲取Cookie:
string name= Request.Cookie["name"].Value.ToString();
三. 使用Session變數(session是存放在伺服器端的)
設置Session: Session["name"] ="hello";
獲取Session: string name = Session["name"].ToString();
四.使用Application 對象變數
Application對象的作用范圍是整個全局,也就是說對所有用戶都有效。此種方法不常使用,因為Application在一個應用程序域范圍共享,所有用戶可以改變及設置其值,故只應用計數器等需要全局變數的地方。
設置Application : Application["name"] = ="hello";
獲取Application : string name = Application["name"].ToString();
回調
起始,起始,只是順序執行,然後抽象出過程函數,這個抽象出來的東西是阻塞的,肯定要得到結果才處理。
然後,然後,出然了回調,不阻塞,直接返回,約定結果通過另一個方法提交返回。這個過程就是回調。
class A
{
private B b;
func fun1()
{
b.do_something();
}
func fun2(Result r){}
}
Class B
{
func do_something{
// in other threads
....
delegate.func2() // call back
}
}
㈦ 在ASP.NET中什麼是頁面回發 什麼是回調 熱心人指點下我啊
頁面回發將重新創建頁面及其控制項,並在伺服器上運行頁面代碼,最後將完整的新版本頁面發送到瀏覽器端重新呈現。在客戶端回調中,使用瀏覽器端腳本函數(一般為JavaScript函數)向伺服器端的當前頁面類對象發送請求。當前頁面類對象運行其正常生命周期的修改版本,即初始化頁面並創建其控制項和其他成員,然後調用特別的方法。這個方法執行代碼中自定義的某些操作過程,然後通過另一個方法將結果發送回瀏覽器,瀏覽器端使用另一個瀏覽器端腳本函數讀取結果值。在這個過程中,頁面駐留在瀏覽器中,並且沒有任何刷新的過程。
相比較而言,回發將導致頁面的刷新,整個頁面在瀏覽器端和伺服器端往返一次,其資源消耗比較大,並且需要ViewState保持狀態數據。而瀏覽器端回調只需要往返必要的部分數據,數據傳輸更快,並且頁面將不會刷新,給用戶帶來良好的瀏覽體驗。
回調是很多ASP.NET開發者忽略掉的知識點。客戶端回調(也可以稱為瀏覽器端)本質上是指通過瀏覽器端的腳本(如JavaScript)向伺服器端傳遞相應的參數,伺服器端再以接受到的參數進行查詢和處理,最後將結果回傳到客戶端進行顯示。
㈧ 新浪微博開發者文檔里"授權回調頁"是什麼意思
是顯示 這個:redirect_url「授權回調頁」,
這個事授權給修改頁面順序的
新浪應用怎麼設置授權回調頁怎麼設置?
你用的是PHP的客戶端嗎,新浪的SDK里有
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o- > getRequestToken();
$aurl = $o- > getAuthorizeURL( $keys['oauth_token'] ,false , $_SERVER['SCRIPT_URI'].'/callback.php');
㈨ 微信OAuth2.0授權回調頁面域名設置問題
當下的解決方案是引入一個新的非常簡單的應用來作為微信授權的代理服務,可以這么做:
1. 把公眾號的網頁授權介面域名設置成另外一個子域名,如proxy.your.com;
2. 然後把php_weixin_proxy裡面的index.php部署到proxy.your.com
php_weixin_proxy下的index.php是一個很簡單的php文件,你可以直接查看源碼了解它的實現方式。因為當前項目的環境,我採用php來完成這個代理服務實現,實際上,你完全可以用任意平台語言來完成類似的功能。
當其它業務需要發起微信授權時,將授權請求先發到proxy.your.com,然後proxy.your.com會把這個請求轉發到微信;
當用戶同意授權後,proxy.your.com會收到微信的授權回調,並把回調結果(code、state參數)原封不動地再返回給最開始發起授權的業務。
唯一的區別在於,在不使用proxy.your.com的時候,你從應用發起微信授權的鏈接應該是這樣的:
https://open.weixin.qq.com/connect/qrconnect?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2F&response_type=code&scope=snsapi_login&state=584bc87e11ff37492#wechat_redirect
用了proxy.your.com之後,這個授權鏈接就應該是這樣的:
http://proxy.your.com/?appid=xxxxx&redirect_uri=http%3A%2F%2Fpassport.your.com%2Flogin%2Fnotify&response_type=code&scope=snsapi_base&state=584bc87e11ff37492&device=pc
後面這個鏈接跟上面的比:
1. 後面的鏈接中的host變成了proxy.your.com,也就是代理的授權回調域名;
2. 後面的多了一個device參數,這個是必要的。因為微信pc端跟移動端的授權地址是不一樣的,而後面的鏈接是發送個proxy.your.com的,所以需要多加個參數告訴它在轉發給授權申請給微信的時候,是用PC端還是移動端的授權地址。
㈩ JAVA用回調來作為參數,感覺比較專業,能不能通俗點解釋一下
回調?
如果是在Java裡面,那沒有什麼回調的說法,所謂回調,就是調用函數後會返回結果到調用的地方。對於Java方法來講,只是返回參數罷了。
如果你是說在頁面使用js函數,使用回調函數,那是真有點高級的。
大體就是這樣的:
Object obj = new Object();
obj.callback=function(){
//xxxxx函數處理
}
然後有一個函數,需要傳遞一個參數:
function test(Object){
//xxxxxx
}
test(obj);
使用回調函數的方式通常是在父子頁面之間來使用的