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

:暂无数据 2026-08-02 21:30:01 1

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

大家好,今天小编来为大家解答以下的问题,关于完整的ajax请求,有真正的ajax并发请求吗,浏览器底层是socket实现的吗这个很多人还不知道,现在让我们一起来看看吧!

本文目录

有真正的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’);这句话。

  • ***隐藏网址***

  • 4.可根据实际要求,设置async:false

    ajax变为同步请求,并锁住浏览器,其他操作必须等待请求完成时才可以执行。再设置一个参数flag,以控制在极端状况下Ajax不会重复提交,在ajax开始之前做个布尔判断,符合要求则开始请求,当success里回调函数全部完毕后,把参数布尔值取反,并跳出请求,当然我这里可以不这么操作,建立一个全局变量,再做判断也可以。

    5.增加了对响应时间的操作

    若响应时间大于一定值时,则停止请求。

  • timeout: 1000,

  • complete: function( XMLHttpRequest, status )

  • {   //Timeout, and  status is success, error equivalents   if( status == ’timeout’ )ajaxTimeOut.abort();          //Cancel request},

  • 我这里全是ajax操作,如实请求时间超时,好歹也就不出结果,不会想form表单提交中断时出现页面断章一片白的结果。

    6.跳转页面的传值

    点击a标签直接链接跳转过去,如何把主页二级联动选择的数据传递过去是个问题。这里我有n种方法可以传递,比如:

  • (1)ajax,(2)form表单action携带参数(3)window.location携带参数(4)cookie传值(5)url 传值(6)利用闭包实现传参(7)sesionstorage 方法(8)localstarage方法

  • 这里重点提一下cookie,localstarage和sesionstorage,首先它们的区别在于:

  • ***隐藏网址***

  • sesionstorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,存储大小的限制大于5m,从IE浏览器从IE8开始支持,HTML5的新特性

  • localstarage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据,存储大小的限制大于5m,从IE浏览器从IE8开始支持。

  • 考虑到传的参数本身是一个变量,且要保持兼容性和灵活性,故我这里采用 localstarage+cookie 的方法:

  • 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() );

  •   }}

  • 并且,在ajax请求成功后调用get_linkage_val函数,去存储参数值,在每次使用时,都清理本地存储。

    7.完整ajax请求如下

  • ***隐藏网址***

  • {   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}

  • 对了,别忘了在主页index加载时就要生成二级联动:

  • $( document ).ready( readyHandler );function readyHandler()

  • {   ajax_index_Upload( ’Eastern China’ );   // Initial display}

  • 8.获取存储的参数

    至此大部分问题已经解决,跳转页面后,首先要去获取存储的参数,并且要在页面生成二级联动和相关搜索信息,

  • //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" );

  • 9.跳转页面生成二级联动和搜索内容

    直接放代码了,这里解释一下,第一个传入参数,主要作用是生成二级联动,配合第二个参数可以去查表生成搜索结果内容。

  • ***隐藏网址***

  • {   //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      }

  •   } );

  • }

  • 在success里,二级联动生成后,需要调用ajax_teach_school(data.region, $t_provinces.val())来生成搜索内容,第一个参数为返回参数的region值,第二个参数为$t_provinces.val() 的值,可以说,这两个值都来源于ajax_teach_Upload(  )处理后的结果。
    10.判断页面访问的途径

    第一种情况:页面是从主页跳出,夹带着搜索的参数过来,要在页面生成相应内容。

    第二种情况:页面是从其他页面跳入,或者是用户手动输入地址访问,没有夹带着搜索的参数过来,需要在页面生成默认的内容。

    故需要在页面加载readyHandler()时对夹带参数做一个判断:

  • $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’ );

  • 同时,我们在ajax_teach_Upload( )里ajax请求成功生成二级联动时,需要对夹带的参数类型进行判断,在二级联动里selected不同的内容。

  • //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’ );

  •         }

描述一次完整的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、验证是否发送成功。

如果你还想了解更多这方面的信息,记得收藏关注本站。

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

本文编辑:admin

更多文章:


androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

本篇文章给大家谈谈androidapp源码免费下载,以及如何实现APK的反编译得到APK的源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 18:00

security的反义词(risk的反义词)

security的反义词(risk的反义词)

大家好,今天小编来为大家解答以下的问题,关于security的反义词,risk的反义词这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 15:40

二郎神杨戬简笔画(二郎神怎么画)

二郎神杨戬简笔画(二郎神怎么画)

本篇文章给大家谈谈二郎神杨戬简笔画,以及二郎神怎么画对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:50

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

大家好,关于service pack 3很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思的知识点,相信应该可以解决大家的一

2026年9月22日 10:20

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

本篇文章给大家谈谈html代码怎么写大佬教程,以及html网页的题来个大佬,写代码,题目在图上对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:10

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

本篇文章给大家谈谈结构体内又一个struct,以及c++ 在结构体中再嵌入一个结构体如何调用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 09:40

next是什么意思英语(next是什么单词)

next是什么意思英语(next是什么单词)

本篇文章给大家谈谈next是什么意思英语,以及next是什么单词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 07:50

美国参议院人数(美国每个州的议员人数取决于什么)

美国参议院人数(美国每个州的议员人数取决于什么)

大家好,今天小编来为大家解答以下的问题,关于美国参议院人数,美国每个州的议员人数取决于什么这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 05:20

高中信息技术python(高考信息技术用的是什么语言)

高中信息技术python(高考信息技术用的是什么语言)

今天给各位分享高考信息技术用的是什么语言的知识,其中也会对高考信息技术用的是什么语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 02:50

cocos creator中文(cocoscreator和cocoscreator3d的区别)

cocos creator中文(cocoscreator和cocoscreator3d的区别)

各位老铁们好,相信很多人对cocos creator中文都不是特别的了解,因此呢,今天就来为大家分享下关于cocos creator中文以及cocoscreator和cocoscreator3d的区别的问题知识,还望可以帮助大家,解决大家的

2026年9月22日 02:30

最近更新

廊坊seo培训适合哪些人学
2026-09-22 18:56:22 浏览:0
合肥网络营销怎么做推广最有效?
2026-09-22 18:55:57 浏览:0
鞍山个人网站建设报价是多少?
2026-09-22 18:55:27 浏览:0
花都网络公司做网站大概要多少钱?
2026-09-22 18:54:55 浏览:0
热门文章

wait for you杨和苏(大家听下(wait for you)这首英文歌的开头那段音乐)
2026-06-13 16:20:04 浏览:22
刷关键字排名怎么操作最有效?
2026-09-14 20:02:13 浏览:14
oppo a9拆机教程(oppoa9拆机教程)
2026-06-13 10:40:02 浏览:12
标签列表