Ajax有什么用?什么时候使用Ajax?
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
Ajax(Asynchronous JavaScript + XML)的定义
基于web标准(standards-based presentation)XHTML+CSS的表示;
使用 DOM(Document Object Model)进行动态显示及交互;
使用 XML 和 XSLT 进行数据交换及相关操作;
使用 XMLHttpRequest 进行异步数据查询、检索;
使用 JavaScript 将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文,原文题目(Ajax: A New Approach to Web Applications)。
类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式对象,也不支持XSLT。
该技术在1998年前后得到了应用。允许客户端脚本发送HTTP请求(XMLHTTP)的第一个组件由Outlook Web Access小组写成。该组件原属于微软Exchange Server,并且迅速地成为了Internet Explorer 40[3]的一部分。部分观察家认为,Outlook Web Access是第一个应用了Ajax技术的成功的商业应用程序,并成为包括Oddpost的网络邮件产品在内的许多产品的领头羊。但是,2005年初,许多事件使得Ajax被大众所接受。Google在它著名的交互应用程序中使用了异步通讯,如Google讨论组、Google地图、Google搜索建议、Gmail等。Ajax这个词由《Ajax: A New Approach to Web Applications》一文所创,该文的迅速流传提高了人们使用该项技术的意识。另外,对Mozilla/Gecko的支持使得该技术走向成熟,变得更为易用。
AJAX前景非常乐观,可以提高系统性能,优化用户界面。AJAX现有直接框架AjaxPro,可以引入AjaxPro2dll文件,可以直接在前台页面JS调用后台页面的方法。但此框架与FORM验证有冲突。另微软也引入了AJAX组建,需要添加AjaxControlToolkitdll文件,可以在控件列表中出现相关控件。
传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。
使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
对应用Ajax最主要的批评就是,它可能破坏浏览器后退按钮的正常行为[4]。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。
进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——需要慎重考虑。不给予用户明确的回应 [5],没有恰当的预读数据 [6],或者对XMLHttpRequest的不恰当处理[7],都会使用户感到延迟,这是用户不欲看到的,也是他们无法理解的[8]。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。
一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax;
用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事;
Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,所以容易给用户带来困扰――用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等;
对串流媒体的支持没有FLASH、Java Applet好;
[编辑本段]基础应用
创建XMLHttpRequest 方法如下
XMLHttpRequest 类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。 后来Mozilla﹑Netscape﹑Safari 和其他浏览器也提供了XMLHttpRequest类,不过它们创建XMLHttpRequest类的方法不同。
对于Internet Explorer浏览器:
xmlhttp_request = new ActiveXObject("Msxml2XMLHTTP30"); //30或40, 50
xmlhttp_request = new ActiveXObject("Msxml2XMLHTTP");
xmlhttp_request = new ActiveXObject("MicrosoftXMLHTTP");
由于在不同Internet Explorer浏览器中XMLHTTP版本可能不一致,为了更好的兼容不同版本的Internet Explorer浏览器,因此我们需要根据不同版本的Internet Explorer浏览器来创建XMLHttpRequest类,上面代码就是根据不同的Internet Explorer浏览器创建XMLHttpRequest类的方法。
对于Mozilla﹑Netscape﹑Safari等浏览器
创建XMLHttpRequest 方法如下:xmlhttp_request = new XMLHttpRequest();
如果服务器的响应没有XML mime-type header,某些Mozilla浏览器可能无法正常工作。 为了解决这个问题,如果服务器响应的header不是text/xml,可以调用其它方法修改该header。
xmlhttp_request = new XMLHttpRequest();
xmlhttp_requestoverrideMimeType('text/xml');
下面我就为大家分享一篇基于$ajax()方法从服务器获取json数据的几种方式总结,具有很好的参考价值,希望对大家有所帮助。
一.什么是json
json是一种取代xml的数据结构,和xml相比,它更小巧但描述能力却很强,网络传输数据使用流量更少,速度更快。
json就是一串字符串,使用下面的符号标注。
{键值对} : json对象
[{},{},{}] :json数组
"" :双引号内是属性或值
: :冒号前为键,后为值(这个值可以是基本数据类型的值,也可以是数组或对象),所以 {"age": 18} 可以理解为是一个包含age为18的json对象,而[{"age": 18},{"age": 20}]就表示包含两个对象的json数组。也可以使用{"age":[18,20]}来简化上面的json数组,这是一个拥有一个age数组的对象。
二.$ajax()方法中dataType属性的取值
$ajax()方法中dataType属性要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText在第三部分解释,并作为回调函数参数传递。可用的类型如下:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurlcallback=,JQuery将自动替换后一个“”为正确的函数名,以执行回调函数。
三.Mime数据类型及response的setContentType()方法
什么是MIME类型在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type header中。
例 如,架设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“application/vndms-excel”。在大多数实际情况中,这个文件然后将传送给 Execl来处理(假设我们设定Execl为处理特殊MIME类型的应用程序)。在Java中,设定MIME类型的方法是通过Response对象的ContentType属性。比如常用:responsesetContentType("text/html;charset=UTF-8")进行设置。
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
每个MIME类型由两部分组成,前面是数据的大类别,例如文本text、图象image等,后面定义具体的种类。
常见的MIME类型:
超文本标记语言文本 html,html text/html
普通文本 txt text/plain
RTF文本 rtf application/rtf
GIF图形 gif image/gif
JPEG图形 ipeg,jpg image/jpeg
au声音文件 au audio/basic
MIDI音乐文件 mid,midi audio/midi,audio/x-midi
RealAudio音乐文件 ra, ram audio/x-pn-realaudio
MPEG文件 mpg,mpeg video/mpeg
AVI文件 avi video/x-msvideo
GZIP文件 gz application/x-gzip
TAR文件 tar application/x-tar
客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。
服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分。
Content-type: text/html
注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。
如前面所说,在Java中,设定MIME类型的方法是通过Response对象的ContentType属性,设置的方法是使用responsesetContentType(MIME)语句,responsesetContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。
Tomcat的安装目录\conf\webxml中就定义了大量MIME类型 ,可以参考。比如可以设置:
responsesetContentType("text/html; charset=utf-8"); html
responsesetContentType("text/plain; charset=utf-8"); 文本
application/json json数据
这个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8。如果该方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。该方法如果在getWriter()方法被调用之后或者在被提交之后调用,将不会设置响应的字符编码,在使用http协议的情况中,该方法设置 Content-type实体报头。
四.使用$ajax()方法获取json数据的三种方式
dataType参数的配置决定了jquery如何帮助我们自动解析服务器返回的数据,有几种方式可以获取后台返回的json字符串并解析为json对象,下面是Java为例解释,下面三中方式的结果都是图一所示,项目运行在内网,无法截图,只能拍照,见谅。
1、$ajax()参数中不设置dataType,后台response也不设置返回类型,则默认会以普通文本处理responsesetContentType("text/html;charset=utf-8");也是作为文本处理,js中需要手动使用eval()或$parseJSON()等方法将返回的字符串转换为json对象使用。
//Java代码:后台获取单个数控定位器的历史表格的数据
public void getHistorySingleData() throws IOException{
HttpServletRequest request = ServletActionContextgetRequest();
HttpServletResponse response = ServletActionContextgetResponse();
responsesetHeader("Content-type", "text/html;charset=UTF-8");
responsesetContentType("text/html;charset=utf-8");
String deviceName = requestgetParameter("deviceName");
String startDate= requestgetParameter("startDate");
String endDate = requestgetParameter("endDate");
SingleHistoryData[] singleHistoryData = chartServicegetHistorySingleData(deviceName,startDate, endDate);
Systemoutprintln(singleHistoryDatalength);
Systemoutprintln(JSONArrayfromObject(singleHistoryData)toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
responsegetWriter()print(JSONArrayfromObject(singleHistoryData)toString());
}
/js代码:选择查询某一时间段的数据,点击查询之后进行显示/
$("#search")click(function () {
var data1 = [];
var n;
var deviceName=$("body")attr("id");
var startDate = $("#startDate")val();
var endDate = $("#endDate")val();
$ajax({
url:"/avvii/chart/getHistorySingleData",
type:"post",
data:{
"deviceName":deviceName,
"startDate": startDate,
"endDate": endDate
},
success: function (data) {
alert(data);//---->弹出[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}],后台传过来几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
alert(ObjectprototypetoStringcall(data)); //--->弹出[object String],说明获取的是String类型的数据
var JsonObjs = eval("(" + data + ")"); //或者:var JsonObjs = $parseJSON(data);
alert(JsonObjs);//alert(JsonObjs);---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]后台传过来几条singleHistoryData对象就打印几个[object Object]
n=JsonObjslength;
if(n==0){
alert("您选择的时间段无数据,请重新查询");
}
for(var i = 0; i < JsonObjslength; i++){
var name = JsonObjs[i]['time'];//针对每一条数据:JsonObjs[i],或者:JsonObjs[i]time
var state = JsonObjs[i]['state'];
var ball = JsonObjs[i]['ball'];
var xd = JsonObjs[i]['xd'];
var yd = JsonObjs[i]['yd'];
var zd = JsonObjs[i]['zd'];
var xf = JsonObjs[i]['xf'];
var yf = JsonObjs[i]['yf'];
var zf = JsonObjs[i]['zf'];
data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};//个数与下面表头对应起来就可以了,至于叫什么名字并不影响控件的使用
}
if(JsonObjslength != 10){
for(var j=0;j<(10-((JsonObjslength)%10));j++){ //补全最后一页的空白行,使表格的长度保持不变
data1[j+JsonObjslength] = {name:" ",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""};
}
}
var userOptions = {
"id":"kingTable", //必须 表格id
"head":["时间","运行状态","球头状态","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承载力/Kg","Y向承载力/Kg","Z向承载力/Kg"], //必须 thead表头
"body":data1, //必须 tbody 后台返回的数据展示
"foot":true, // true/false 是否显示tfoot --- 默认false
"displayNum": 10, //必须 默认 10 每页显示行数
"groupDataNum":6, //可选 默认 10 组数
sort:false, // 点击表头是否排序 true/false --- 默认false
search:false, // 默认为false 没有搜索
lang:{
gopageButtonSearchText:"搜索"
}
}
var cs = new KingTable(null,userOptions);
}
});
});2、$ajax()参数中设置dataType="json",则jquery会自动将返回的字符串转化为json对象。后台可以设置为:推荐responsesetContentType("text/html;charset=utf-8");或者responsesetContentType("application/json;charset=utf-8");
//Java代码:后台获取单个数控定位器的历史表格的数据
public void getHistorySingleData() throws IOException{
HttpServletRequest request = ServletActionContextgetRequest();
HttpServletResponse response = ServletActionContextgetResponse();
responsesetHeader("Content-type", "text/html;charset=UTF-8");
responsesetContentType("text/html;charset=utf-8");
String deviceName = requestgetParameter("deviceName");
String startDate= requestgetParameter("startDate");
String endDate = requestgetParameter("endDate");
SingleHistoryData[] singleHistoryData = chartServicegetHistorySingleData(deviceName,startDate, endDate);
Systemoutprintln(singleHistoryDatalength);
Systemoutprintln(JSONArrayfromObject(singleHistoryData)toString());//打印:[{"time":"2016-11-11 10:00:00","state":"运行","ball":"锁紧",},{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",},{},{}]查到几条singleHistoryData对象就打印几个对象的信息{"time":"2016-11-11 10:00:05","state":"运行","ball":"锁紧",}
responsegetWriter()print(JSONArrayfromObject(singleHistoryData)toString());
}/js代码:页面首次加载时,显示规定时间段的数据/
var data1 = [];
var deviceName=$("body")attr("id");
var startDate = $("#startDate")val("2000-01-01 00:00:00");
var endDate = $("#endDate")val("2018-01-01 00:00:00");
$ajax({
url:"/avvii/chart/getHistorySingleData",
type:"post",
data:{
"deviceName":deviceName,
"startDate": "2000-01-01 00:00:00",
"endDate": "2018-01-01 00:00:00"
},
dataType:"json",
success: function (data) {
alert(data);//---->弹出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]后台传过来几条singleHistoryData对象就打印几个json对象:[object Object]
for(var i = 0; i < datalength; i++){
不是很懂,这是别人支的招,你看看有没有用:
1那就要使用AJAX,用JS调用服务器程序来获取时间!
2只能服务器把时间传到前台,前台获取。
3一秒读一次服务器时间不现实 可以通过服务器时间初始化个JS的时间对象 然后每次都基于服务器时间变动JS时间 如何
Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。
虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。
通常,在J2EE中,开发人员过于关注服务和持久性层的开发,以至于用户界面的可用性已经落后。在一个典型的J2EE开发周期中,常常会听到这样的话,“我们没有可投入UI的时间”或“不能用HTML实现”。但是,以下Web站点证明,这些理由再也站不住脚了:
BackPack
Google Suggest
Google Maps
PalmSphere
所有这些Web站点都告诉我们,Web应用程序不必完全依赖于从服务器重新载入页面来向用户呈现更改。一切似乎就在瞬间发生。简而言之,在涉及到用户界面的响应灵敏度时,基准设得更高了。
定义Ajax
Adaptive Path公司的Jesse James Garrett这样定义Ajax:
Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:
基于XHTML和CSS标准的表示;
使用Document Object Model进行动态显示和交互;
使用XMLHttpRequest与服务器进行异步通信;
使用JavaScript绑定一切。
这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。
Ajax的工作原理
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。
DateTimeNow 获取的是服务器时间,你在本地测试是获取你本机的时间。如果你不确定,帮程序上传到服务器,然后修改本地时间,访问服务器的程序你就可以看到获取的是服务器还是本地时间了。
而js的var d = new Date(); 获取的永远都是客服端时间。如果需要用js获取对应的服务器时间,可使用ajax获取当前页面中HEAD的Date属性,返回的是服务器时间。
这个是我自己在学习的时候的笔记,给你看看。或许能理解。。。 AJAX是异步交互,在客户端与服务器只加引入一个媒介,从改变了同步交互过程中“处理--等待--处理--等待”的模式。
浏览器在执行任务时即装载了Ajax引擎。该引擎室js编写的,通常位于页面的框架中,负责转发客户端和服务器之间的交互。另外,
通过js调用AJAX引擎,可以使得页面不在被整体刷新,而仅仅更新用户需要的部分,不但避免了“白屏”现象,还大大节省了带快,加快了
web浏览的速度。
好处可以归纳为几点:
1减轻服务器的负担,加快浏览速度。
2带来更好的用户体验。
3基于标准化并被广泛支持的技术,不需要下载插件或小程序。目前主流的浏览器都支持AJAX技术,使得它的推广十分顺畅。
4进一步促进页面呈现书数据分离。AJAX获取服务器可以完全利用单独的模块进行操作,从而使得技术人员和美工人员能够更好的分工与配合。
AJAX的组成部分:是由4中技术组成的。
JAVAScript:是通用的脚本语言,用来嵌入在某种应用之中。AJAX应用程序是用JAVASCRIPT编写的。
CSS:CSS为WEB页面元素提供了可视化样式的定义方法。AJAX应用中,用户界面的样式可以通过CSS独立修改。
DOM:通过JS修改DOM,AJAX应用程序可以再运行时改变用户界面,或者局部更新页面中的某个节点
XMLHttpRequest:XMLHttpRequest对象允许Web程序员从WEB服务器以后台的方式获取数据。数据的格式通常是XML,或者是文本。
什么叫异步交互: 异步交互可以使页面同事处理多件事物,而传统的同步交互必须一件一件事情按顺序完成。
不太严谨的说,异步交互就是一个简单的多线程,它能够使用户同事进行多项操作而不间断。AJAX的的异步交互在后台默默地工作着,呈现给用户一个无刷新的页面。
1、ajax能发送https请求获取服务器数据。
2、总结android 采用http请求访问网络并获取数据的步骤:
(1)发送http请求,并传递相应的参数;
(2)获取http返回的状态,根据返回的状态,如404错误,500错误,连接超时,请求异常等,并在界面提示相关状态;
(3)web服务器端封装数据并返回一定格式的数据对象,例如封装json对象;
(4)http状态返回正常,取出正确的参数并解析,如解析json对象;
(5)解析服务器端返回的数据后显示在android相应的控件或存储本地数据,提示操作完成等。
3、服务器端封装json数据的方法:采用php语言封装json的两种格式,数据可以是从数据库返回的数组,本例只采用简单的赋值方式返回数据。$_POST["type"]对应的是post的请求方式获取参数值。
0条评论