Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)

以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题。

$(document).ready(function(){

var arra=new Array();

$.post("/getdata",null,function(data){

for(var i=0;i

arra.push(data);

}

});

$("#item").val(data[0]);

});

发现自己犯了一个错误。首先,看一下$.post与$.ajax

$.post其实是$.ajax的特写,真正的形式为

$.ajax({ 
           url: "/getdata", 
           type: "post", 
           data: null,

cache:false,

async:true,
           contentType:"application/json;charset=utf-8",  
         success:function(data){

}

});

ajax默认请求为异步的,也就是默认将async设置为true.对上面的程序进行修改:async 参数设置为 false

$(document).ready(function(){

var arra=new Array();

$.ajax({ 
           url: "/getdata", 
           type: "post", 
           data: null,

cache:false,

async:false,
           contentType:"application/json;charset=utf-8",  
          success:function(data){

for(var i=0;i

arra.push(data);

}

}

});

$("#item").val(data[0]);

});

note:若使用默认的异步模式,发送ajax异步后,在等待server端返回数据的过程中,前段程序会继续执行ajax块之后的内容,直到server返回结果。这段时间中,程序拥有多个执行的线程,这样可以适当的提高性能和用户体验。而使用同步方式时,发送ajax请求后,程序会一直等待server端,直到server端返回数据。

原文地址:https://www.cnblogs.com/asdyzh/p/9824423.html

时间: 2024-10-27 18:26:08

Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)的相关文章

java主线程等待所有子线程执行完毕在执行(常见面试题)

java主线程等待所有子线程执行完毕在执行(常见面试题) java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用户下单成功,下面就说一下我能想到的方法,欢迎大家批评指正: 用sleep方法,让主线程睡眠一段时间,当然这个睡眠时间是主观的时间,是我们自己定的,这个方法不推荐,但是在这里还是写一下,毕竟是解决方法 2.使用Thread的join()等待所有

Java主线程等待所有子线程执行完毕再执行解决办法集

Java主线程等待所有子线程执行完毕在执行,其实在我们的工作中经常的用到,比如说主线程要返回一个响应用户的值,但这个值得赋值过程是由过个子线程来完成的(模拟一个实际开发的情景),所以主线程必须等待子线程执行完毕,再响应用户:否则,响应用户的是一个无意义的值. 那么如何确保所有的子线程执行完毕了.一般的有如下方法: 1  让主线程等待,或着睡眠几分钟.用Thread.sleep()或者TimeUnit.SECONDS.sleep(5); 如下: package andy.thread.tradit

jquery的AJAX中各个事件执行顺序

jquery的AJAX中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.error 7.ajaxError (全局事件) 8.complete 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件)

C#winform调用外部程序,等待外部程序执行完毕才执行下面代码

1.简单调用外部程序文件(exe文件,批处理等),只需下面一行代码即可 System.Diagnostics.Process.Start(“应用程序文件全路径”); 2.如果要等待调用外部程序执行完毕才执行下面代码,只需要在后面加上WaitForExit()方法 System.Diagnostics.Process.Start(应用程序文件全路径).WaitForExit(); 3.另一种方法:使用实例化方法不使用静态方法 1 Process process = new Process(); 2

Jquery 等待ajax返回数据loading控件ShowLoading组件

1.意义 开发项目中,前台的页面要发请求到服务器,服务器响应请求返回数据到前台,这段时间,有可能因为返回的数据量较大导致前台页面出现短暂性的等待,此时如果用户因不知情而乱点击有可能造成逻辑混乱,所以此时需要在加载数据中将前台进行提示在加载数据中,利用jquery的遮罩组件可以完成这个功能需求. 2.实现步骤 (1).下载 showLoading.css    jquery.showLoading.min.js  两个文件. (2).在jsp中引入这两个文件 <link href="styl

CountDownLatch用法---等待多个线程执行完才执行

CountDownLatch用法---等待多个线程执行完才执行 一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了. CountDownLatch类只提供了一个构造器: 1 public CountDownLatch(int count) {  };  //参数count为计数值

css3动画,监控动画执行完毕

在CSS3之前,在网页上要做动画,一般使用javascript来实现,用timer定时执行一些操作来实现动画效果. 自有了CSS3之后,在网页上做动画变得更简单了.相对于使用javascript的实现方式,用CSS3实现的动画效果更流畅,实现起来也更简单.当然,因为CSS几乎没有什么逻辑控制,所以一般只用来做一些简单的.与用户没有交互的动画. 在CSS3中有两种实现动画的方式,一种是使用transition,另一种是使用animation.如果只是想要简单的过渡效果,则使用transition,

myeclipse断点调试

(转) 作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今年才写了此篇博文.关于java调试技术还有很多,如Java Debug Interface等,依据具体项目的需要,还有很多值得去研究和学习的.该博文仅就Eclipse断点调试技巧做下总结,不足够的地方还请大牛们指点. 1  Debug视图 1.1 线程堆栈视图 线程堆栈视图表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号

如何等待ajax完成再执行相应操作

ajax广泛应用于异步请求,对于大多数业务来说,这是十分方便的,但对于一些特殊的业务,ajax的异步性会起到相反的作用. 例如在ajax请求成功后,后续的操作需要依赖ajax执行成功后的相应操作. // 声明一个表示状态的全局变量 status var status = false; // ajax $.ajax({ url:"/checkUsername", type:"post", success:function(){ status = true; } });