完整的ajax请求(有真正的ajax并发请求吗,浏览器底层是socket实现的吗)

本文目录
- 有真正的ajax并发请求吗,浏览器底层是socket实现的吗
- ajax请求的五个步骤是什么
- 使用ajax方式请求时获取不到cookie吗
- 描述一次完整的Ajax请求过程
- Ajax异步访问的四个步骤是那四个步骤
- ajax是什么东西
- ajax请求的五个步骤
- ajax如何使用
- 现需要使用 jQuery 代码实现 ajax 请求,详细信息如下
- 原生ajax请求 怎么设置processData这个参数
有真正的ajax并发请求吗,浏览器底层是socket实现的吗
Ajax和WEB服务器交互是通过HTTP协议来进行的,说白了,Ajax实际上也是在访问一个HTTP地址。
再者,浏览器底层通信都是通过Socket来实现的,Socket只负责发送和接收数据,至于数据包结构就是不同的上层协议(如HTTP协议或者FTP协议)来自行规定的。
回到正题,你简单的理解为Ajax反正是通过HTTP协议和服务器进行信息通信的,至于是否是和服务器同时并发的,这个还的看WEB服务器以及浏览器支持的HTTP版本。
HTTP1.0版本:客户机每向服务器请求一次,都会和服务器建立一次连接,处理完毕后会断开;
HTTP1.1版本:客户机向服务器请求时,不会马上端口连接,会通过多次握手来确定同一个连接目标,说白了,就是和服务器建立一次连接,做多次通信,比如打开一个网页,网页里面有含有css文件、js文件或者图片等等,那么这些请求只会使用同一个连接,这是浏览器自己实现的。
我们看到的Ajax并发,实际上也是和服务器建立了连接,服务器根据请求的HTTP版本建立所需的连接。
ajax请求的五个步骤是什么
第1步 创建异步对象,首先,创建一个XMLHttpRequest异步对象。
第2步 设置请求方式和地址,然后,设置请求方式和请求地址。
第3步 用send发送请求,接着,用send发送请求。
第4步 监听状态变化,然后,监听状态变化。
第5步 接收返回的数据,最后,接收返回的数据。
Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法。
使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。
Ajax这个术语源自描述从基于 Web 的应用到基于数据的应用。
Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。
使用ajax方式请求时获取不到cookie吗
ajax,顾名思义:异步的 JavaScript 和 XML。在不重新加载整个页面的情况下,AJAX 是与服务器交换数据并更新部分网页的艺术。ajax特别适合用在那些需要不刷新页面形式一定功能的页面中,在目前网页编写中,是绝对不可获取的。
这几日做了一些ajax实例与大家分享,内容比较长,讲的比较细,如有不足之处,还望指正。
项目中,用到多个ajax实例,这里我选了2个:
(一)跳页面(夹带数据)的ajax二级联动和提交显示
1.主页中,用户选择一级下拉菜单内容,动态生成二级菜单内容(二级联动)
2.用户点击按钮提交搜索,页面跳转一个子页面a,并夹带主页选择的联动下拉菜单内容数据。
3.子页面a中,页面a中央的二级联动部分同步显示主页中用户选择的内容
4.同时在子页面a规定板块中动态加载用户在主页行使的搜索内容。
5.用户在子页面a中,可以正常选择一级菜单,正常生产二级菜单,并且随着选择的进行,在下方规定的板块中动态生产对应的内容。
6.用户在浏览器点击前进、后退,再返回a页面,或者在浏览器手动输入地址,都能默认显示选择好的二级联动菜单和动态生产的内容。
(二)同页面(无刷新)的form表单ajax提交
1.当前页面中,用户在表单中选择相应内容,点击搜索按钮,页面不刷新生成搜索内容(即:利用ajax的form表单下的submit不刷新提交)
2.做好简单的表单验证,清空表单以及搜索返回功能。
这两个案例基本上可以带你入门ajax,在项目中能完成大部分的需求功能,好,下面我们开始第一块内容。
一、跳页面(夹带数据)的ajax二级联动和提交显示
完成效果如下:
主页 如下:
子页面 如下:
1.html内容:
《form》
《span class="teach_word"》Schools list:《/span》
《select id="region" name="region" onchange="ajax_index_Upload(this.value);"》
《option value="Eastern China" selected》Eastern China《/option》
《option value="Southwestern China"》Southwestern China《/option》
《option value="North & NW China"》North & NW China《/option》
《option value="Southern & Central"》Southern & Central《/option》
《option value="Northeastern China"》Northeastern China《/option》
《option value="Others"》Others《/option》
《/select》
《select name="provinces" id="provinces" onchange="get_linkage_val()"》 《!--《option value="zhejiang"》Anhui《/option》--》 《/select》
《a href="/dede/a/Teach_in_China" style="margin-left:370px;"》
《input class="teach_sub" type="button" value="search"》
《/a》
《/form》
2.搭建ajax框架
***隐藏网址***
这里我只用ajax去实现案例一,不用form表单,submit提交的方式。首先是二级联动,这里,我一级下拉菜单是写死的,二级菜单,动态生成,用onchange事件去触发,如下结构:
function ajax_index_Upload( val )
{ var $region = $( "#region" ); var $provinces = $( "#provinces" ); $.ajax( { type: "POST", dataType: "json", url: "/dede/templets/default/china_city.php", data: { "region": val
}, success: function( data ){}, error: function( XMLHttpRequest, textStatus )
{ alert( XMLHttpRequest.status ); alert( XMLHttpRequest.readyState ); alert( textStatus );
}
} );}
3.在success里写上生成option的语句
代码:var$option=$("《option value="+ data.provinces+"《/option》");
再添加到select中:$provinces.append($option);
每次改变一级下拉菜单时,在新增option时,都要先清空二级内容,:$provinces.empty();
这里注意一下:若是error报错:parsererror。则原因可能为返回类型的问题。
在后台php中加上 header(’Content-type:application/json’);这句话。
***隐藏网址***
- timeout: 1000,
- complete: function( XMLHttpRequest, status )
- { //Timeout, and status is success, error equivalents if( status == ’timeout’ )ajaxTimeOut.abort(); //Cancel request},
- (1)ajax,(2)form表单action携带参数(3)window.location携带参数(4)cookie传值(5)url 传值(6)利用闭包实现传参(7)sesionstorage 方法(8)localstarage方法
***隐藏网址***
sesionstorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,存储大小的限制大于5m,从IE浏览器从IE8开始支持,HTML5的新特性
localstarage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据,存储大小的限制大于5m,从IE浏览器从IE8开始支持。
- function get_linkage_val()
- { //localStorage clear all localStorage.clear(); //storage,IE6 ~ 7 use cookie / Other browsers use HTML5localStorage if( window.localStorage )
- { localStorage.setItem( "index_link_val1", $( "#region" ).val() ); localStorage.setItem( "index_link_val2", $( "#provinces" ).val() );
- } else {
- Cookie.write( "index_link_val1", $( "#region" ).val() );
- Cookie.write( "index_link_val2", $( "#provinces" ).val() );
- }}
- ***隐藏网址***
- { var $region = $( "#region" ); var $provinces = $( "#provinces" ); /* Set a parameter, in order to control ajax will not be submitted repeatedly No other operations are performed until a request is completed */ var flag = true; if( flag ) $.ajax( { type: "POST", dataType: "json", url: "/dede/templets/default/china_city.php", async: false, timeout: 1000, data: { "region": val
- }, success: function( data )
- { $region.val( data.region ); //set $region’s value = the first of data.region //select $provinces / option $provinces.empty(); //Dynamically generated drop - down list for( var i = 0; i 《 data.length; i++ )
- { var $option = $( "《option value=" + data.provinces + "《/option》" ); $provinces.append( $option );
- } //get #region and #provinces value get_linkage_val(); flag = false;
- }, complete: function( XMLHttpRequest, status )
- { //Timeout, and status is success, error equivalents if( status == ’timeout’ )ajaxTimeOut.abort(); //Cancel request }, error: function( XMLHttpRequest, textStatus )
- { alert( XMLHttpRequest.status ); alert( XMLHttpRequest.readyState ); alert( textStatus );
- }
- } ); if( !flag )return false}
- $( document ).ready( readyHandler );function readyHandler()
- { ajax_index_Upload( ’Eastern China’ ); // Initial display}
- //get localStoragevar $region_val = window.localStorage ? localStorage.getItem( "index_link_val1" ) : Cookie.read( "index_link_val1" );var $provinces_val = window.localStorage ? localStorage.getItem( "index_link_val2" ) : Cookie.read( "index_link_val2" );
- ***隐藏网址***
- { //get localStorage var $region_val = window.localStorage ? localStorage.getItem( "index_link_val1" ) : Cookie.read( "index_link_val1" ); var $provinces_val = window.localStorage ? localStorage.getItem( "index_link_val2" ) : Cookie.read( "index_link_val2" ); var $t_region = $( "#t_region" ); var $t_provinces = $( "#t_provinces" ); $.ajax( { type: "POST", dataType: "json", url: "/dede/templets/default/china_city.php", timeout : 1000, //Timeout setting data: { "region": val1, "provinces": val2
- }, success: function( data )
- { $t_provinces.empty(); //select $t_provinces / option for( var i = 0; i 《 data.length; i++ )
- { var $option = $( "《option value=" + data.provinces + "《/option》" ); $t_provinces.append( $option );
- } //show school content in teaching_in_china web ajax_teach_school( data.region, $t_provinces.val() )
- }, complete : function(XMLHttpRequest,status)
- { //Timeout, and status is success, error equivalents if( status == ’timeout’ )ajaxTimeOut.abort(); //Cancel request }
- } );
- }
- $region_val && $provinces_val ? //show linkage in teaching_in_china web //Default load ajax_teach_Upload( $region_val, $provinces_val ) : ajax_teach_Upload( ’Eastern China’, ’Zhejiang’ );
- //set $t_region and $t_provinces value if( $region_val && $provinces_val ) //other web into this web { $t_region.val( data.region ); //show index select val in teach_in_china web’s linkage $t_provinces.val( $provinces_val );
- } else //index into this web { $t_region.val( ’Eastern China’ ); //show Default val $t_provinces.val( ’Zhejiang’ );
- }
4.可根据实际要求,设置async:false
ajax变为同步请求,并锁住浏览器,其他操作必须等待请求完成时才可以执行。再设置一个参数flag,以控制在极端状况下Ajax不会重复提交,在ajax开始之前做个布尔判断,符合要求则开始请求,当success里回调函数全部完毕后,把参数布尔值取反,并跳出请求,当然我这里可以不这么操作,建立一个全局变量,再做判断也可以。
5.增加了对响应时间的操作
若响应时间大于一定值时,则停止请求。
我这里全是ajax操作,如实请求时间超时,好歹也就不出结果,不会想form表单提交中断时出现页面断章一片白的结果。
6.跳转页面的传值
点击a标签直接链接跳转过去,如何把主页二级联动选择的数据传递过去是个问题。这里我有n种方法可以传递,比如:
这里重点提一下cookie,localstarage和sesionstorage,首先它们的区别在于:
考虑到传的参数本身是一个变量,且要保持兼容性和灵活性,故我这里采用 localstarage+cookie 的方法:
并且,在ajax请求成功后调用get_linkage_val函数,去存储参数值,在每次使用时,都清理本地存储。
7.完整ajax请求如下
对了,别忘了在主页index加载时就要生成二级联动:
8.获取存储的参数
至此大部分问题已经解决,跳转页面后,首先要去获取存储的参数,并且要在页面生成二级联动和相关搜索信息,
9.跳转页面生成二级联动和搜索内容
直接放代码了,这里解释一下,第一个传入参数,主要作用是生成二级联动,配合第二个参数可以去查表生成搜索结果内容。
在success里,二级联动生成后,需要调用ajax_teach_school(data.region, $t_provinces.val())来生成搜索内容,第一个参数为返回参数的region值,第二个参数为$t_provinces.val() 的值,可以说,这两个值都来源于ajax_teach_Upload( )处理后的结果。
10.判断页面访问的途径
第一种情况:页面是从主页跳出,夹带着搜索的参数过来,要在页面生成相应内容。
第二种情况:页面是从其他页面跳入,或者是用户手动输入地址访问,没有夹带着搜索的参数过来,需要在页面生成默认的内容。
故需要在页面加载readyHandler()时对夹带参数做一个判断:
同时,我们在ajax_teach_Upload( )里ajax请求成功生成二级联动时,需要对夹带的参数类型进行判断,在二级联动里selected不同的内容。
描述一次完整的Ajax请求过程
AJAX运行过程中5种状态:
0 - (未初始化)还没有调用send()方法,
1 - (载入)已调用send()方法,正在发送请求,
2 - (载入完成)send()方法执行完成,
3 - (交互)正在解析响应内容,
4 - (完成)响应内容解析完成,可以在客户端调用了。
$.post(url,params,function(data){},"json");
Jquery发送的post请求
参数1:请求路径 一般在页面中,发送数据到controller层
参数2:发送过去的参数 获取到页面中的一些参数
参数3:回调函数 请求成功,在controller层中对应的处理方法上面返回的数据
参数4:请求和返回的数据类型 可以是json
这个是jquery包装的post请求,原始的ajax请求比较麻烦,我一般用的都是jquery封装的ajax请求
这个方法,一定要注意最后的一个参数
《script type="text/javascript"》
/*点击修改按钮,让市场价格,售价,库存,购买显示亮起来,可以输入数字 */
function updateSku(skuId) {
$("#m" + skuId).attr("disabled", false);
$("#p" + skuId).attr("disabled", false);
$("#i" + skuId).attr("disabled", false);
$("#l" + skuId).attr("disabled", false);
/*获取修改后的,sku中的数据 */
function addSku(skuId)
var m = $("#m" + skuId).attr("disabled", true).val();
var p = $("#p" + skuId).attr("disabled", true).val();
var i = $("#i" + skuId).attr("disabled", true).val();
var l = $("#l" + skuId).attr("disabled", true).val();
//保存
var url = "/product/updateSku.do";
var params = {"marketPrice" : m,"skuPrice" : p,"stockInventory" : i,"skuUpperLimit" :
l,"id" : skuId };
$.post(url,params,function(data){
alert(data.message);
《td align="center"》
《input type="text" id="m${sku.id}" name="marketPrice" value="${sku.marketPrice}"
disabled="disabled" size="10" /》
// 库存中的保存@RequestMapping("/product/updateSku.do")public void
updateSku(Sku sku, Model model, HttpServletResponse response) {// 修改
skuService.updateSkuByKey(sku);JSONObject jo = new JSONObject();
jo.put("message", "保存成功!");// 将ajax请求,返回一个成功的信息
ResponseUtils.sendJson(response, jo.toString());}
Ajax异步访问的四个步骤是那四个步骤
要完整实现一个AJAX异步调用,通常需要以下几个步骤:
(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象。
(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息。
(3)设置响应HTTP请求状态变化的函数。
(4)发送HTTP请求。
(5)获取异步调用返回的数据。
(6)使用JavaScript和DOM实现局部刷新。
ajax是什么东西
分类: 电脑/网络 》》 程序设计 》》 其他编程语言
问题描述:
如题`
解析:
术语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。该对象在Inter Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
直接表格数据,而不是要求用户导航到新的页面来数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。
Ajax可用于那些场景?——一个例子:MSN Money页面
前几天,在浏览MSN Money页面的时候,有一篇关于房地产投资的文章引起了我的好奇心。我决定使用站点的“Rate this article”(评价本文)功能,鼓励其他的用户花一点时间来阅读这篇文章。在我单击vote按钮并等待了一会儿之后,整个页面被刷新,在原来投票问题所在的地方出现了一个漂亮的感谢画面。
而Ajax能够使用户的体验更加愉快,它可以提供响应更加灵敏的UI,并消除页面刷新所带来的闪烁。目前,由于要刷新整个页面,需要传送大量的数据,因为必须重新发送整个页面。如果使用Ajax,服务器可以返回一个包含了感谢信息的500字节的消息,而不是发送26,813字节的消息来刷新整个页面。即使使用的是高速Inter,传送26K和1/2K的差别也非常大。同样重要的是,只需要刷新与投票相关的一小节,而不是刷新整个屏幕。
让我们利用Ajax实现自己的基本投票系统。
原始的Ajax:直接使用XmlHttpRequest
如上所述,Ajax的核心是JavaScript对象XmlHttpRequest。下面的示例文章评价系统将带您熟悉Ajax的底层基本知识:tearesolutions/ajax-demo/raw-ajax。注:如果您已经在本地WebLogic容器中安装了ajax-demo.war,可以导航到localhost:7001/ajax-demo/raw-ajax,
浏览应用程序,参与投票,并亲眼看它如何运转。熟悉了该应用程序之后,继续阅读,进一步了解其工作原理细节。
首先,您拥有一些简单的定位点标记,它连接到一个JavaScriptcastVote(rank)函数。 function castVote(rank) {
var url = "/ajax-demo/static-article-ranking";
var callback = processAjaxResponse;
executeXhr(callback, url);
}
该函数为您想要与之通信的服务器资源创建一个URL并调用内部函数executeXhr,提供一个回调JavaScript函数,一旦服务器响应可用,该函数就被执行。由于我希望它运行在一个简单的Apache环境中,“cast vote URL”只是一个简单的HTML页面。在实际情况中,被调用的URL将记录票数并动态地呈现包含投票总数的响应。
下一步是发出一个XmlHttpRequest请求: function executeXhr(callback, url) {
branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send(null);
} branch for IE/Windows ActiveX version
else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = callback;
req.open("GET", url, true);
req.send();
}
}
}
如您所见,执行一个XmlHttpRequest并不简单,但非常直观。和平常一样,在JavaScript领域,大部分的工作量都花在确保浏览器兼容方面。在这种情况下,首先要确定XmlHttpRequest是否可用。如果不能用,很可能要使用Inter Explorer,这样就要使用所提供的ActiveX实现。
executeXhr()方法中最关键的部分是这两行:
req.onreadystatechange = callback;
req.open("GET", url, true);
第一行定义了JavaScript回调函数,您希望一旦响应就绪它就自动执行,而req.open()方法中所指定的“true”标志说明您想要异步执行该请求。
一旦服务器处理完XmlHttpRequest并返回给浏览器,使用req.onreadystatechange指派所设置的回调方法将被自动调用。 function processAjaxResponse() {
only if req shows "loaded"
if (req.readyState == 4) {
only if "OK"
if (req.status == 200) {
502 502’votes’).innerHTML = req.responseText;
} else {
alert("There was a problem retrieving the XML data:
" +
req.statusText);
}
}
}
该代码相当简洁,并且使用了几个幻数,这使得难以一下子看出发生了什么。为了弄清楚这一点,下面的表格(引用自developer.apple/inter/webcontent/xmlreq)列举了常用的XmlHttpRequest对象属性。
属性
描述
onreadystatechange
每次状态改变所触发事件的事件处理程序
readyState
对象状态值:
0 = 未初始化(uninitialized)
1 = 正在加载(loading)
2 = 加载完毕(loaded)
3 = 交互(interactive)
4 = 完成(plete)
responseText
从服务器进程返回的数据的字符串形式
responseXML
从服务器进程返回的DOM兼容的文档数据对象
status
从服务器返回的数字代码,比如404(未找到)或200(就绪)
statusText
伴随状态码的字符串信息
现在processVoteResponse()函数开始显示出其意义了。它首先检查XmlHttpRequest的整体状态以保证它已经完成(readyStatus == 4),然后根据服务器的设定询问请求状态。如果一切正常(status == 200),就使用innerHTML属性重写DOM的“votes”节点的内容。
既然您亲眼看到了XmlHttpRequest对象是如何工作的,就让我们利用一个旨在简化JavaScript与Java应用程序之间的异步通信的框架来对具体的细节进行抽象。
Ajax: DWR方式
按照与文章评价系统相同的流程,我们将使用Direct Web Remoting(DWR)框架实现同样的功能。
假定文章和投票结果存储在一个数据库中,使用某种对象/关系映射技术来完成抽取工作。为了部署起来尽可能地简单,我们不会使用数据库进行持久性存储。此外,为使应用程序尽可能通用,也不使用Web框架。相反,应用程序将从一个静态HTML文件开始,可以认为它由服务器动态地呈现。除了这些简化措施,应用程序还应该使用Spring Framework关联一切,以便轻松看出如何在一个“真实的”应用程序中使用DWR。
现在应该下载示例应用程序并熟悉它。该应用程序被压缩为标准的WAR文件,因此您可以把它放置到任何一个Web容器中——无需进行配置。部署完毕之后,就可以导航到localhost:7001/ajax_demo/dwr-ajax来运行程序。
可以查看HTML 源代码,了解它如何工作。给人印象最深的是,代码如此简单——所有与服务器的交互都隐藏在JavaScript对象ajaxSampleSvc的后面。更加令人惊讶的是,ajaxSampleSvc服务不是由手工编写而是完全自动生成的!让我们继续,看看这是如何做到的。
引入DWR
如同在“原始的Ajax”一节所演示的那样,直接使用XmlHttpRequest创建异步请求非常麻烦。不仅JavaScript代码冗长,而且必须考虑服务器端为定位Ajax请求到适当的服务所需做的工作,并将结果封送到浏览器。
设计DWR的目的是要处理将Web页面安装到后端服务上所需的所有信息管道。它是一个Java框架,可以很轻松地将它插入到Web应用程序中,以便JavaScript代码可以调用服务器上的服务。它甚至直接与Spring Framework集成,从而允许用户直接向Web客户机公开bean。
DWR真正的巧妙之处是,在用户配置了要向客户机公开的服务之后,它使用反射来生成JavaScript对象,以便Web页面能够使用这些对象来访问该服务。然后Web页面只需接合到生成的JavaScript对象,就像它们是直接使用服务一样;DWR无缝地处理所有有关Ajax和请求定位的琐碎细节。
ajax请求的五个步骤
品牌型号:Redmibook Pro 15
系统:Windows10
软件版本:Visual Studio Code1.60.0 以Visual Studio Code1.60.0,ajax请求的五个步骤,创建异步对象,设置请求方式和地址,用send发送请求,监听状态变化,接收返回的数据。 1 创建异步对象 《!-- 1第1步 创建异步对象 --》
首先,创建一个XMLHttpRequest异步对象。
2 设置请求方式和地址 《!-- 2第2步 设置请求方式和地址 --》然后,设置请求方式和请求地址。
3 用send发送请求 《!-- 3第3步 用send发送请求 --》接着,用send发送请求。
4 监听状态变化 《!-- 4第4步 监听状态变化 --》然后,监听状态变化。
5 接收返回的数据 《!-- 5第5步 接收返回的数据 --》最后,接收返回的数据。
ajax如何使用
ajax请求的五个步骤如下
步骤如下五个步骤
1.创建异步对象,首先,创建一个XMLHttpRequest异步对象。
2.设置请求方式和地址,然后,设置请求方式和请求地址
3.用send发送请求,接着,用send发送请求。
4.监听状态变化,然后,监听状态变化。
5.接收返回的数据,最后,接收返回的数据
现需要使用 jQuery 代码实现 ajax 请求,详细信息如下
Jquery 的 $.post() 方法通过 HTTP POST 方式向服务器发送请求并获取返回的数据,可以实现ajax的提交、接收处理、返回;
例子:
$.post(
// 接收数据的PHP页面
url : ’action.php’,
// 传给PHP的数据,多个参数用&连接或者使用json格式数据:
{a:’value1’,b:’value2’},function(msg)
{
// 这里是请求发送成功后的回调函数。
// msg是返回的数据
if(msg.xx == xx)
{
#处理情况一
}
else
{
#处理情况二
}
},’json’);// 默认返回字符串,设置值等于json则返回json数据
把你上面的自己填写进去,就可以了,自己多动手,才会提高水平,真要出不来,追问我
原生ajax请求 怎么设置processData这个参数
1、新建一个网页send_get.html,在此网页中设置一个按钮。
2、创建一个接受get请求的php文件get_ajax.php,这个文件会输出一段语句“very good,the get have been received"。
3、在send_get.html网页中 ,插入javascript代码,使用document.getElementById()获取button对象,并绑定点击事件。
4、首先创建异步对象,其次设置请求的参数,包括:get、请求的url,最后,发送get请求。
5、发送出去的get请求,需要注册事件,来查看它的返回状态。 就是onreadystatechange事件,状态改变时就会调用。为了保证 数据 完整返回,我们一般会判断两个值readyState和status, 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的。
6、如果发送get请求成功,打印获取数据成功,并打印出获取的数据,并将标签h1的内容设置为获取的数据。
7、验证是否发送成功。

更多文章:
androidapp源码免费下载(如何实现APK的反编译得到APK的源码)
2026年9月22日 18:00
service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)
2026年9月22日 10:20
html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)
2026年9月22日 10:10
结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)
2026年9月22日 09:40
cocos creator中文(cocoscreator和cocoscreator3d的区别)
2026年9月22日 02:30





