`
enki_ding
  • 浏览: 210734 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[转]Ajax同步与异步的区别

阅读更多

var returnValue = null;
xmlhttp = createXmlHttp();
xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        if (xmlhttp.responseText == "true") {
            returnValue = "true";
        }
        else {
            returnValue = "false";
        }
    }
};
xmlhttp.open("Post",url,true); //异步传输
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
xmlhttp.send(sendStr);
return returnValue;

 

 

 

 

 

 

在异步时才可以用xmlHttpReq.onreadystatechange状态值!下面是异步和同步的不同调用方式:
Java代码

xmlHttpReq.open("GET",url,true);//异步方式
   
    xmlHttpReq.onreadystatechange = showResult; //showResult是回调函数名
    xmlHttpReq.send(null);

function showResult(){  
    if(xmlHttpReq.readyState == 4){    
     if(xmlHttpReq.status == 200){
      ******
     }
    }
}

Java代码
xmlHttpReq.open("GET",url,false);//同步方式  
            xmlHttpReq.send(null);  
            showResult(); //showResult虽然是回调函数名但是具体用法不一样~  
              
function showResult(){     
             //if(xmlHttpReq.readyState == 4){    这里就不用了,直接dosomething吧~   
                //if(xmlHttpReq.status == 200){  
                    ******//dosomething  
                //}  
            //}  
}

 

 


xmlhttp.open("Post",url,true);
如果是同步(false),返回值是true或false,因为执行完send后,开始执行onreadystatechange,程序会等到onreadystatechange都执行完,取得responseText后才会继续执行下一条语句,所以returnValue一定有值。
    如果是异步(true),返回值一定是null,因为程序执行完send后不等xmlhttp的响应,而继续执行下一条语句,所以returnValue还没有来的及变化就已经返回null了。

http://te343.w3.sh.cn/blog/view.aspx?blogid=82

 

    所有如果想获得xmlhttp返回值必须用同步,异步无法得到返回值。

    同步异步使用xmlhttp池时都要注意:取得xmlhttp时只能新建xmlhttp,不能从池中取出已用过的xmlhttp,因为被使用过的xmlhttp的readyState为4,所以同步异步都会send但不执行onreadystatechange。

 

转自:http://blog.sina.com.cn/s/blog_4d6fba1b0100mri4.html

分享到:
评论

相关推荐

    AJAX同步或异步流程图

    同步AJAX流程与异步基本一致,只是`open()`方法的第三个参数设为`false`,使得浏览器等待请求完成再继续执行后续代码。 总结来说,AJAX异步通信提供了更优秀的用户体验,因为它允许用户在等待服务器响应的同时进行...

    程序同步与异步的区别

    ### 程序同步与异步的区别 #### 同步与异步的基本概念 在计算机科学领域中,同步(Synchronous)与异步(Asynchronous)是两种重要的通信模式,它们广泛应用于各种软件开发场景中,包括但不限于网络编程、多线程...

    用法 XMLHttpRequest的用法 ajax同步和异步的区别

    ### XMLHttpRequest的用法及AJAX同步与异步的区别 #### 一、XMLHttpRequest简介 `XMLHttpRequest`对象是实现客户端与服务器端异步交互的重要工具之一。它允许JavaScript执行HTTP请求,无需重新加载整个网页即可从...

    jquery的ajax同步和异步的理解及示例

    最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 而异步则这个AJAX代码...

    ajax同步和异步的优缺点

    对新手学ajax 有帮助。希望大家能够喜欢和利用。

    Ajax异步与同步方法封装的js文件

    调用方法:1 将下载好的Ajax js文件引用到页面 代码如下:<script src " js MyAjax js" type "text javascript">< script> 2 调用方法:(1)异步: MyAjax " 要调用的方法...

    Ajax同步和异步问题浅析及解决方法

    在文档中提出了两种解决Ajax同步异步问题的方法: 1. 回调函数解决方案: 这种方法是在Ajax请求成功完成后,通过回调函数来执行依赖于异步数据返回的操作。例如,在文档提供的代码片段中: ```javascript $.get...

    Ajax页面局部异步刷新技术

    `XMLHttpRequest`是Ajax的核心组件,用于在后台与服务器交换数据,并执行异步请求而无需重载整个网页。其主要功能包括发送异步HTTP请求、处理服务器响应等。 #### 创建XMLHttpRequest对象 ```javascript var ...

    详解socket阻塞与非阻塞,同步与异步、I/O模型

    Socket编程中的阻塞与非阻塞、同步与异步是两个独立的概念,它们涉及的是不同层面的操作机制。这里我们将详细探讨这两个概念以及I/O模型。 首先,同步与异步是客户端(C端)调用服务端(S端)时的行为模式。同步...

    原生ajax代码实现异步提交

    原生Ajax技术是Web开发中的一个关键组成部分,它允许网页在不刷新整个页面的情况下与服务器进行数据交互,实现异步通信。在这个场景中,我们讨论的是如何使用原生JavaScript代码来实现一个简单的异步提交功能,例如...

    ajax中的async属性值之同步和异步及同步和异步区别

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死...

    ajax 同步请求和异步请求的差异分析

    在JavaScript的世界里,AJAX(Asynchronous ...总的来说,理解AJAX的同步和异步请求的区别是开发高效、用户友好的Web应用的关键。选择合适的请求类型,结合良好的错误处理策略,可以大大提高应用程序的性能和用户体验。

    javascript发送ajax请求,获取返回值res,async 同步/异步

    javascript发送ajax请求,获取返回值res,async 同步/异步 var res = sendRequest({ url : "1.php", //necessary method : "post", params : { param1 : "123", param2 : "234" }, async : false });

    解决js ajax同步请求造成浏览器假死的问题

    总结一下,解决js ajax同步请求造成浏览器假死的问题的关键在于理解浏览器单线程的特性及其在执行同步请求时会阻塞UI线程的行为。开发者可以通过使用异步请求或将耗时的请求操作放入setTimeout等JavaScript定时器中...

    ExtJs Ajax 同步问题

    总之,理解和正确使用Ajax同步与异步是ExtJS开发中的重要技能。遇到问题时,应首先检查配置,然后关注服务器响应和回调处理,最后考虑优化请求策略以提高用户体验。对于具体的解决方案,建议查看博客链接中的内容,...

    尚筹网-加餐-Ajax的同步和异步请求1

    本文将深入探讨Ajax的同步和异步请求,以及它们的工作原理。 ### 1. 异步工作方式 **1.1 图解** 在异步模式下,Ajax请求发送后,浏览器不会等待服务器的响应,而是继续执行后续的代码。当服务器返回响应时,会调用...

    ajax 同步和异步XMLHTTP代码分析

    总结来说,理解AJAX的同步和异步模式是至关重要的,它们直接影响到应用程序的性能和用户体验。在开发过程中,要根据具体场景选择合适的工作模式,并充分利用回调函数来处理服务器的响应。同时,了解不同浏览器对...

    Ajax同步与异步传输的示例代码

    在Ajax中,传输模式分为同步(Synchronous)和异步(Asynchronous),这两种模式的主要区别在于数据请求和响应的处理方式。 **同步传输**: 同步传输模式下,JavaScript会阻塞浏览器执行其他任务,直到Ajax请求完成...

    ajax实现异步通信

    **Ajax 实现异步通信详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户...

    jquery中的ajax同步和异步详解

    最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 而异步则这个AJAX代码...

Global site tag (gtag.js) - Google Analytics