㈠ 回调函数和普通函数有什么区别
普通函数与回调函数主要是在调用方式上有区别:
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);
使用回调函数的方式通常是在父子页面之间来使用的