精华内容
下载资源
问答
  • 2021-01-26 14:01:58

    ajax怎么异步读取mysql数据库的字段内容?

    使用PHP文件连接mysql,mysql中有两个字段现在要用AJAX异步读取到字段的jQuery.ajax({ url: 'XXXXX.action', // 提交的页面 data: {msg_id:+id}, // 有要传递的数据就传递,没有就空着 type: "POST",//传递方式 success: function(data) { //action返回结果。

    如何实现ajax异步请CSS布局HTML小编今天和大家分享,要访问数据库的那种

    要访问数据库的,异步实现显示班级人数,写个大概

    换班级的select框写个onchange函数,在里面通过ajax访问后台。

    jquery ajax怎么访问数据库,然后把数据显示出来,jquery: $.ajax({type:"GET",url:"aa.txt",data: "flag=area",success:function(msg){$(".area_title").html(msg+"综合门户");},error:function(XMLHttpRequest, textStatus, thrownError){}}) aa.txt 内容随便写个值

    jquery ajax异步获取数据 怎么么做?有点简单例子么?

    jquery ajax异步获取数据 怎么么做?大家有点简单例子么? 比如说我要传个下面给你一个登录的例子,流程:ajax提交后台-访问数据库-返回数据-登录成功

    js代码 funcation Login(){$.ajax({ type: "post", contentType: "application/json", url: "../Backstage/AdminService.asmx/GetAdminList",//请CSS布局HTML小编今天和大家分享后

    利用Ajax发送异步请CSS布局HTML小编今天和大家分享访问SQL数据库如何实现,请高分两步:现在后台写数据库访问,然后再在JSP中写Ajax调用 $.ajax({url: '?param=#', type: 'GET', dataType: 'json', timeout: 10000, error: function(){ }, success: function(val){ if (val.success){ }else alert(val.reason); } });

    怎么实现ajax实现异步获取数据库对象然后把对象里ajax实现收银系统焦点位于会员卡号,点下enter键怎么实现从后台按会员卡本人会,但是要看你的服务器脚本是什么的。

    AJAX异步处理是什么意思的?

    打个比方吧,通常情况下,用户注册,那么用户首先得填写好表单,然后点提交,这样表单就会向服务发出一个请CSS布局HTML小编今天和大家分享,则服务器处理代码,如果用户存在,则返回一个信息。总之,就是所有的数据需要你点提交后,信息才会发送。

    AJAX怎么实现异步处理页面?

    怎么实现异步刷新呢??原理是用户操作先返回给用户更新的页面,但是这Ajax其实就是使用JS和后台交互的这种技术。 JS是客户端页面能执行的代码,通过Ajax客户端代码,可以隐式打开一个地址,所谓隐式就是不像我们浏览器一样在地址栏输入地址来打开网页,是在浏览器里面直接看不到的。 通过JS的XMLHttpRequest对象打

    如何抓取ajax请CSS布局HTML小编今天和大家分享异步返回的数据

    更多相关内容
  • ajax的使用方法,在js中调用cs文件中的一直方式,使用步骤如下 (1)下载ajax.dll,并添加项目的引用。 (2)在项目的webconfig的节点中,添加”POST,GET” path=”ajax/*.ashx” type=”Ajax.PageHandlerFactory,>...
  • 主要介绍了jQuery 中ajax异步调用的四种方式,实例讲解,需要的朋友可以参考下。
  • 4种PHP异步执行的常用方式.除了ajax,你还知道几种异步调用方式?
  • 代码如下:$.ajax({ async: true, // 默认true(异步请求) cache: true, // 默认true,设置为 false 将不会从浏览器缓存中加载请求信息。 type: “POST”, // 默认:GET 请求方式:[POST/GET] dataType: “xml”, //...
  • 通过点击按钮来请求WebService.asmx的 GetList()方法,获取泛型集合。
  • 一、WebService.asmx: 处理业务数据,在GetPerson方法中产生Person实体类数据,供JqueryRequest.aspx调用,代码如下: 代码如下: [WebMethod] public Person GetPerson(string name, int age, string address) { ...
  • 在上一篇异步调用Web服务方法中,我们谈论过,ajax框架的asmx(ScriptHandler)是不支持异步调用Web服务方法的,所以为了让asp.netajax支持异步Web方法调用,我们需要避开该处理器,以提供自定义的处理器来取代它。...
  • Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用实现代码,需要的朋友可以参考下。
  • 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax异步调用async:true(默认情况),如: ...
  • php 异步调用方法 客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果。 有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回给客户端。但因为...
  • 当用户填写好账号切换到密码框的时候,使用ajax验证账号的可用性。这篇文章就主要为大家详细介绍了Ajax实现异步用户名验证功能,感兴趣的小伙伴们可以参考一下
  • 最近做项目遇到这样的需求:管理后台需要随时下载数据报表,数据要实时生成后转换为excel下载。怎么解决这个问题呢?下面小编给大家分享Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法,一起看看吧
  • ajax异步调用实例

    2014-03-09 00:21:30
    ajax异步调用实例
  • AJAX异步调用代码

    2014-01-11 00:22:04
    C#JS AJAX部分代码 用于前后台的数据同步
  • ajax异步和同步的区别

    2021-08-06 04:44:12
    AJAX异步打个比方吧,通常情况下,用户注册,那么用户首先得填写好表单,然后点提交,这样表单就会向服务发出一个请求,则服务器处理代码,如果用户存在,则返回一个信息。总之,就是所有的数据需要你点提交后,信息...

    AJAX异步

    打个比方吧,通常情况下,用户注册,那么用户首先得填写好表单,然后点提交,这样表单就会向服务发出一个请求,则服务器处理代码,如果用户存在,则返回一个信息。总之,就是所有的数据需要你点提交后,信息才会发送!

    而AJAX就相当于是模拟了一个信息发送请求,你可以在很多网站上注册的时候会发现,比如用户名输入“123”,那么它可能会提示你该用户已经存在,而给你的感觉是页面并没刷新,也就是并没有提交表单,而用户名又是存放在数据库内的,也就是说要查询用户名是否存在,就必须得发送表单的里的用户名,然后再在数据库中去查询。

    而这个过程就是用了AJAX来处理的,用户输入用户名,当表单的焦点发生变化的时候,则会触发AJAX,然后AJAX模拟一个GET或者POST请求给服务器,服务器就会处理传递过来的数据!而服务器在处理数据的时候,你可以做其它的,比较你可以填写密码或者其它的!

    52e25578766cfcf635b13c83ae6ff3e0.png

    Ajax同步和异步的区别

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题。 最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执 行完毕后才会继续运行其他代码页面假死状态解除。

    而异步则这个AJAX代码运行中的时候其他代码一样可以运行。

    jquery的async:false,这个属性

    默认是true:异步,false:同步。

    $.ajax({

    type: “post”,

    url: “path”,

    cache:false,

    async:false,

    dataType: ($.browser.msie) ? “text” : “xml”,

    success: funcTIon(xmlobj){

    }

    });

    有了这个属性可以相对的减少代码运行书序问题,但是如果用的太多,页面假死次数太多。这样反而导致用户体验不佳~!

    $.Ajax()中 async 和success的官方的解释:

    async

    Boolean

    Default: true

    By default, all requests are sent asynchronous (e.g. this is set to true by default)。 If you need synchronous requests, set this opTIon to false. Note that synchronous requests may temporarily lock the browser, disabling any acTIons while the request is acTIve.

    success

    Function

    A function to be called if the request succeeds. The function gets passed two arguments: The data returned from the server, formatted according to the ‘dataType’ parameter, and a string describing the status. This is an Ajax Event.

    在 这里,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)例:

    $.ajax({

    type:“POST”,

    url:“Venue.aspx?act=init”,

    dataType:“html”,

    success:function(result){ //function1()

    f1();

    f2();

    }

    failure:function (result) {

    alert(‘Failed’);

    },

    }

    function2();

    在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2(),也就是说,在这个时候出现两个线程,我们这里暂且说为function1() 和function2()。

    当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。

    之前一直以为只要同步就好了。其实如果同步就失去了ajax的意义。

    遇到一个bug.

    页面的加载 加载中。。。。。 引用一个publish.js

    1 function loader(m) {

    2 var left = (window.innerWidth / 2) - 83;

    3 var top = window.innerHeight / 2 - 60;

    4 var height = 50;

    5 var html =

    6 ‘《div id=“ajaxloader_zz” style=“z-index: 9999998; position: absolute; top: 0px; left: 0; width: 100%; height: 100%; opacity: 0; ”》《/div》’ +

    7 ‘《div id=“ajaxloader” style=“width:200px;height:100px; text-align:center;background-color:snow;border-radius:5px; position:fixed;top:’ + top + ‘px;left:’ + left + ‘px;z-index:9999999;”》’ +

    8 ‘《table style=“vertical-align:middle;text-align:center; width:100%;height:100%;”》’ +

    9 ‘《tr》《td》《div style=“margin-top:20px;”》《img src=“。。/images/loading.gif” /》《/div》《/td》《/tr》’ +

    10 ‘《tr》《td》《span style=“color:black;font-family:Helvetica-Regular;font-weight:bold;font-size:16px”》’ + m + ‘《/span》《/td》《/tr》《/table》《/div》’;

    11 return html;

    12 }

    13

    14 //请求开始动画

    15 $(document).ajaxSend(function () {

    16 alert(1);

    17 if ($(“#ajaxloader”).length == 0) {

    18 $(“body”).append(loader(“请稍候。。。”));

    19 $(“#ajaxloader,#ajaxloader_zz”).fadeIn(“normal”);

    20 }

    21 });

    22

    23 请求成功动画

    24 $(document).ajaxSuccess(function () {

    25 if ($(“#ajaxloader”).length 》 0) {

    26 $(“#ajaxloader,#ajaxloader_zz”).fadeOut(“normal”);

    27 $(“#ajaxloader,#ajaxloader_zz”).remove();

    28 }

    29 });

    30 //请求错误动画

    31 $(document).ajaxError(function () {

    32 if ($(“#ajaxloader”).length 》 0) {

    33 $(“#ajaxloader,#ajaxloader_zz”).fadeOut(“normal”);

    34 $(“#ajaxloader,#ajaxloader_zz”).remove();

    35 $(“body”).append(loader(“请求失败!”));

    36 $(“#ajaxloader,#ajaxloader_zz”).fadeIn(“normal”);

    37 setTimeout(function () { $(“#ajaxloader,#ajaxloader_zz”).fadeOut(“normal”); $(“#ajaxloader,#ajaxloader_zz”).remove(); }, 1000);

    38 }

    39 });

    页面引用这个js.当有ajax操作时,会有请稍等。。。。的提示

    如果页面中使用的ajax请求是同步的。在google和ie等浏览器上不会有此效果。改为异步即可。

    注意:添加async:false.即修改为同步了,什么意思?(按同事解释就是,这是等这个ajax有了返回值后才会执行下面的js。一语道破天机,怪不得以前很多ajax调用里面的赋值都不起作用)。这样等ajax给bol赋值完毕后,才执行下面的js部分。而刚刚异步的话,还没有来得及赋值,就已经return了。

    展开全文
  • Ajax异步调用

    2012-06-11 22:53:06
    Ajax 异步调用 返回数组 返回HashTable 访问Xml jquery
  • aJax 异步调用

    2012-01-19 13:02:26
    aJax 异步调用
  • 主要教大家如何手写Ajax实现异步刷新,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • layui实现数据表格table分页功能,异步加载,表格渲染,含条件查询。 一、引入layUI的相关资源 <link rel=stylesheet href=${ctxPath}/vendor/layui/css/layui.css > [removed][removed] 二、html页面代码 ...
  • 以前在新浪博客写过js调用AJAX时Getpost的乱码解决办法,但是使用js代码比较繁琐,我们在使用ajax进行数据交互时可以使用js的一个成熟框架—jQuery。 一个网站的设计,不管是注册登录还是分页查找,都需要提交参数...
  • 易语言做Web服务器与Ajax异步交互
  • 在这篇文章中,我们将学习ajax的工作原理,已经使用原生的ajax和jquery的ajax来进行编程练习。 目录 ajax原理介绍 什么是ajax ajax的优点 ajax的应用场景 ajax原理分析 使用ajax 原生ajax jquery使用ajax ...

            在这篇文章中,我们将学习ajax的工作原理,已经使用原生的ajax和jquery的ajax来进行编程练习。 


    目录

    ajax原理介绍

    什么是ajax

    ajax的优点

    ajax的应用场景

    ajax原理分析

    使用ajax

    原生ajax

    jquery使用ajax

    $.ajax()

    $.get()

    $.post()

    总结


    ajax原理介绍

            ajax现在是前后端交互的重要工具,可以说,只要从事于it行业,ajax那就是必须要掌握的一名技术,下面我们就来对ajax进行介绍。


    什么是ajax

            ajax是Asynchronous Javascript And XML的简写,意思就是异步的javascript和xml,也就是异步请求。现在主要用于前后端进行交互,从而实现动态网页,异步更新。


    ajax的优点

            在传统的html中,当我们向服务器发送数据后,页面会发生跳转,如果我们使用ajax,那么就可以在不发生跳转的情况下实现前后端的交互,从而实现数据的更新,进而实现局部页面更新。


    ajax的应用场景

            我们直接看一个最典型的案例,这就用到了ajax技术。

            上面是一个搜索框,我们进行搜索的时候,下面就自动进行提示,这就是ajax的典型应用案例,我们只要输入字符,那么就会发送ajax请求,服务器返回数据,页面再进行展示。

            ajax的应用场景很多,可以说,现在和后端通信,基本都是使用ajax来进行了。


    ajax原理分析

    1. 我们自己定义触发事件,在触发事件里面编写ajax代码
    2. 当事件触发时,游览器将会发送ajax异步请求,本质还是http请求
    3. 服务器返回数据,我们通过回调函数来对返回数据进行处理
    4. 将数据展示到页面上,实现局部更新


    使用ajax

            我们这里介绍原生的ajax和jquery使用ajax,现在还有十分流行的axious,这个的原理也是ajax,我们把ajax好,学习其他异步请求也就轻松了。

    原生ajax

            我们使用原生的ajax,首先要创建XMLHttpRequest 对象,这个对象就可以用来实现异步请求。

    var xhr = new XMLHttpRequest();

            我们创建对象后就可以使用该对象的方法,我们使用open方法,这个方法可以指定请求的方法,请求的地址,参数,以及是同步还是异步请求。open(method,url,async)

    xhr.open("GET","http://localhost:8080/ajax/userServlet?username=jack",true)

            上面的代码表示我们使用get方式请求,请求的地址是http//localhost:8080/ajax/userServlet,参数为username,值为jack,最后一个参数true表示使用异步请求,如果填false,那么就是同步请求。

    xhr.onreadystatechange = function(){};

            onreadystatechange,这个就是用来指定回调函数的,也就是当请求成功后,我们要做的事情。

            ajax请求有好几个状态,readyState,readyState保存在XMLHttpRequest中,不同的值表示不同状态。

    • 0: 请求未初始化
    • 1: 服务器连接已建立
    • 2: 请求已接收
    • 3: 请求处理中
    • 4: 请求已完成,且响应已就绪

            我们在一般情况下,都是对readyState=4来进行操作

            除了readyState,我们都知道,在http响应中有一个状态码,其中200表示成功,在ajax中也是一样,XMLHttpRequest对象中有一个属性为status,这个就是响应的状态码。所以,我们在进行编写回调函数的时候就可以写成下面那样。

              xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200){
                    //代码段
                }
              }

            我们在大多数情况下都是写成上面那样。

            对于服务器返回的数据,我们使用XMLHttpRequest的responseText就可以进行接收(不能是xml),接收到值后进行处理。

    var text = xhr.responseText;

            我们把上面的代码都写好后,最后一步就是发送ajax请求,这个很简单,直接使用send方法即可。

    xhr.send();

            完整的一个原生ajax请求代码如下:

        <script>
            window.onload = function () {
                //给按钮添加点击事件
                document.getElementById("btn1").onclick = function () {
                    //创建一个XMLHttpRequest对象
                    var xhr = new XMLHttpRequest()
                    //请求的方式,url,异步请求
                    xhr.open("GET", "/ajax/userServlet?username=jack", true)
                    xhr.onreadystatechange = function () {
                        //当请求已完成,且响应已就绪并且状态码为200的时候我们认为正常响应了
                        if (xhr.readyState === 4 && xhr.status === 200) {
                            //得到响应的数据
                            var text = xhr.responseText;
                        }
                    }
                    xhr.send();
                }
            }
        </script>

    jquery使用ajax

            上面使用原生ajax还是比较麻烦的,现在我们就使用jquery的ajax请求方式。

    $.ajax()

            这个方法是jquery编写ajax的写法,里面传入一个对象,对象中以key:value来填写参数$.ajax({name:value, name:value, ... }),常见的参数如下:

    • type:规定请求的类型(GET 或 POST)。
    • url:规定发送请求的 URL。默认是当前页面。
    • data:规定要发送到服务器的数据。
    • dataType:预期的服务器响应的数据类型。
    • beforeSend(xhr):表示发送请求前运行的函数。
    • success(result,status,xhr):当请求成功时运行的函数。一般只使用第一个参数,第一个参数表示响应的数据
    • error(xhr,status,error):如果请求失败要运行的函数。
    • complete(xhr,status):请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。

            上面是一些常见的属性,详细信息请参考jquery ajax,下面给出一个$.ajax()的使用。

            //绑定点击事件
            $("#btn1").click(function () {
                $.ajax({
                    url: "http://localhost:8080/ajax/userServlet",//请求的网址
                    type: "post", //请求方式
                    data: { //请求数据
                        username: 'jack',
                    },
                    error: function () { //失败后的回调函数
                        console.log("失败~")
                    },
                    success: function (data) {//成功后的回调函数
                        console.log("成功:" + data);
                    },
                    dataType: "json" //响应的类型
                })
            })

    $.get()

            上面的$.ajax()还是有些复杂,我们为了简化,可以直接使用$.get(),这个方法只有4个参数,写法为 $.get(URL,data,function(data,status,xhr),dataType),我们只需要按照顺序写就行了,4个参数分别表示请求地址,请求数据,成功后的回调函数,响应类型。

            其中,url是必须要写的,其他都是可选项。请求方法为get,下面给出一个$.get()的写法。

                $.get("http://localhost:8080/ajax/userServlet", {
                    username: 'jack'
                }, function (data) {
                    console.log("请求成功 "+ data)
                }, "json")

            这种写法功能和上面一样,但是简洁了很多。


    $.post()

            这个方法和$.get()基本是一样的,就是请求的方法不一样,其他都一样,直接按照$.get()使用即可。


    总结

            我们在这篇文章中介绍了ajax,ajax的作用,工作原理等,并且还使用原生ajax和jquery的ajax来进行编程,学完后,相信大家已经对ajax有了大致认识,当然,这篇文章只介绍了ajax的一小部分内容,也是最常用的,想要深入了解,还得要通过系统学习才行。

    展开全文
  • js写AJAX 异步调用 -实现回调

    热门讨论 2011-07-29 10:52:39
    1、自己手写的javascript ajax异步调用 并回调js函数传参。 2异步调用并实现xsl 解析xml
  • ajax异步调用

    千次阅读 2017-12-22 01:20:46
    2、同步和异步 异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。 举个例子来说同步和异步,同步就好像排队体...

     

     

    1、名称:

    ajax 的全称是AsynchronousJavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式。

    2、同步和异步

     

    异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。

    举个例子来说同步和异步,同步就好像排队体检,得做完一项再进行下一项,而异步相当于vip会员,体检完一项直接进行下一项,不需要排队。

    3、ajax所包含的技术

     

     大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

       1.使用CSS和XHTML来表示。

       2. 使用DOM模型来交互和动态显示。

       3.使用XMLHttpRequest来和服务器进行异步通信。

       4.使用javascript来绑定和调用。

    在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的,XMLHttpRequest虽然目前还没有被W3C所采纳,但是它已经是一个事实的标准,因为目前几乎所有的主流浏览器都支持它。

    ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。

    XMLHttpRequest是ajax的核心机制,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

    4、XMLHttpRequest的工作原理。

      首先,我们先来看看XMLHttpRequest这个对象的属性。

      它的属性有:

      onreadystatechange  每次状态改变所触发事件的事件处理程序。

      responseText     从服务器进程返回数据的字符串形式。

      responseXML    从服务器进程返回的DOM兼容的文档数据对象。

      status           从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)

      status Text       伴随状态码的字符串信息

      readyState       对象状态值

    0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)

    1 (初始化) 对象已建立,尚未调用send方法

    2 (发送数据) send方法已调用,但是当前的状态及http头未知

    3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,

    4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据

     

     但是,由于各浏览器之间存在差异,所以创建一个XMLHttpRequest对象可能需要不同的方法。这个差异主要体现在IE和其它浏览器之间。下面是一个比较标准的创建XMLHttpRequest对象的方法。

     

    [javascript] view plain copy

    1. function CreateXmlHttp()  
    2.   {  
    3.   //非IE浏览器创建XmlHttpRequest对象  
    4.    if(window.XmlHttpRequest)  
    5.    {  
    6.     xmlhttp=new XmlHttpRequest();  
    7.    }  
    8.    //IE浏览器创建XmlHttpRequest对象  
    9.     if(window.ActiveXObject)  
    10.    {  
    11.    try  
    12.    {  
    13.     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");      
    14.    }  
    15.    catch(e)  
    16.    {  
    17.    try{  
    18.     xmlhttp=new ActiveXObject("msxml2.XMLHTTP");  
    19.     }  
    20.     catch(ex){}  
    21.    }  
    22.    }  
    23.   } </span></span>  

     

    [javascript] view plain copy

    1. function Ustbwuyi()  
    2.    {  
    3.     var data=document.getElementById("username").value;    
    4.         CreateXmlHttp();  
    5.         if(!xmlhttp)  
    6.         {  
    7.          alert("创建xmlhttp对象异常!");  
    8.          return false;  
    9.         }     
    10.         xmlhttp.open("POST",url,true); //设置请求方式为POST,设置请求的URL,设置为异步提交     
    11.        //将方法地址复制给onreadystatechange属性  
    12.         xmlhttp.onreadystatechange=function()  
    13.         {    
    14.          //Ajax引擎状态为成功  
    15.          if(xmlhttp.readyState==4)  
    16.            {  
    17.            document.getElementById("user1").innerHTML="数据正在加载...";  
    18.              if(xmlhttp.status==200)//HTTP协议状态为成功  
    19.              {  
    20.               document.write(xmlhttp.responseText);  
    21.              }  else{  
    22.                  alert("请求失败,错误码="+xmlhttp.status);  
    23.              }     
    24.            }  
    25.          }  
    26.         xmlhttp.send();//将设置信息发送到Ajax引擎  
    27.    }  

     

    首先创建一个XMLHttpRequest对象,之后javaspcript方法检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),那么就执行下面需要的操作。

    对于XmlHttpRequest的两个方法,open和send,其中open方法指定了:

    a、向服务器提交数据的类型,即post还是get。

    b、请求的url地址和传递的参数。

    c、传输方式,false为同步,true为异步。默认为true。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式。

    之后调用Send(content)方法用来发送请求。

     

    send方法向服务器发出请求,如果采用异步方式,该方法会立即返回。

    content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。

    通过这个示例我们看到Ajax 基本上就是把 JavaScript 技术和XMLHttpRequest对象放在 Web 表单和服务器之间。当用户向服务器请求时,数据发送给一些 JavaScript 代码而不是直接发送给服务器。JavaScript代码在幕后发送异步请求,然后服务器将数据返回 JavaScript 代码,后者决定如何处理这些数据,它可以迅速更新表单数据。这就是Ajax的原理所在。

    5、用图来理解Ajax原理


    6、ajax的优点

     

    Ajax的给我们带来的好处大家基本上都深有体会,在这里我只简单的讲几点:

       1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。

      2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。

      3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。

      4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

    7、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技术的网站时,它目前是不支持的,当然,这个问题和我们没太多关系。

    8、ajax的几种框架

     

     目前我们采用的比较多的ajax框架主要有ajax.dll,ajaxpro.dll,magicajax.dll 以及微软的atlas框架。Ajax.dll和Ajaxpro.dll这两个框架差别不大,而magicajax.dll只是封装得更厉害一些,比如说它可以直接返回DataSet数据集,前面我们已经说过,ajax返回的都是字符串,magicajax只是对它进行了封装而已。但是它的这个特点可以给我们带来很大的方便,比如说我们的页面有一个列表,而列表的数据是不断变化的,那么我们可以采用magicajax来处理,操作很简单,添加magicajax之后,将要更新的列表控件放在magicajax的控件之内,然后在pageload里面定义更新间隔的时间就ok了,atlas的原理和magicajax差不多。但是,需要注意的一个问题是,这几种框架都只支持IE,没有进行浏览器兼容方面的处理,用反编译工具察看他们的代码就可以知道。

     除了这几种框架之外,我们平时用到的比较多的方式是自己创建xmlHttpRequest对象,这种方式和前面的几种框架相比更具有灵活性。另外,在这里还提一下aspnet2.0自带的异步回调接口,它和ajax一样也可以实现局部的无刷新,但它的实现实际上也是基于xmlhttprequest对象的,另外也是只支持IE,当然这是微软的一个竞争策略。

    9.什么是回调

    软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础(引用自网络) 

     
    10、回调函数

    回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可以在回调函数里完成你要做的事。例如:模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应。 那么我们就把foo称为回调函数。 

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,927
精华内容 48,370
关键字:

异步调用ajax1和ajax2