2 qq 24543633 qq_24543633 于 2016.04.24 23:25 提问

使用jQuery ajax,回调函数必须在有一个alert()的前面才能执行?

请问下

 $(document).ready(function() {
                $("#confirm").submit(function(){
                    var $form = $(this);
                    $.post($form.attr("action"),$form.serialize(),function(data){
                        alert("5555");
                        if (data.code == 0) {
                            alert("添加成功,红包一个工作日到账,请注意查收");
                            $('#myModal2').modal('toggle');
                                return false;
                        }else{
                            alert(data.message);
                            return false;
                        }
                    },"json");
                                       //  alert();   //如果有这句alert就先走到这句然后才进入回调函数,如果没有直接走到下一句return false;为什么
                    return false; //直接走到这里
                });
            });

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.24 23:26

因为是异步执行的,所以如果不加上alert,可能外侧函数已经执行到false了,但是内侧的ready还没有执行到。

caozhy
caozhy   Ds   Rxr 2016.04.24 23:27
w172087242
w172087242   Ds   Rxr 2016.04.25 14:00

ajax在没有设置底层async参数是不阻塞方法往下执行的,也就是不同步的。因为ajax是网络请求,速度一般都没有继续往下执行的本地程序快。

所以所过不设置async参数的话,成功操作最好写在success中。

设置async如果网络特别慢的话,会造成页面假死的情况,所以不建议轻易设置该参数。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
jQuery绑定事件不执行,添加alert后可以正常执行
因为我不知道怎么描述这个问题,gu
使用Ajax之后要alert才能执行的解决方案
因为ajax默认是异步执行的,也就是并没有等待请求完毕就开始执行下一行js语句了,导致赋值为null。 解决方案: 加上如下代码: $.ajax({ async:false, //******其他代码 }); 即可解决。
js函数必须在alert执行才能执行
多数原因为界面ajax中动态添加的元素还没被添加上,就执行了js函数(js函数要调用动态元素),解决办法:ajax方法中添加 async:false,同步,作用为,在ajax执行完毕后才执行之后的js。
解决必须要alert一下,才生效的问题
例如: if(parseInt(status) == 201){ dhxWins.unload(); }在这段代码前面加上alert就可以运行了。 可能原因:这种情况一般出现在alert()之后的某个代码需要页面元素进行一定的状态才能使用,加上alert()之后,相当于页面元素有足够的事件进入一定的状态了,也就是说:必须给予alert()之后的代码足够的时间来进入一定的状态。
jquery ajax 回调函数的值alert出来[object Object] 解决方法
$("#activity_project").change(function() {     var pro = $("#activity_project").val();     $.ajax({         type: "POST",         url: "${pageContext.request.contextPath}/getMyPlan",         data: { /
使用ajax提交必须alert才能赋值
一个奇怪的问题,在使用ajax提交的时候将返回值赋给一个变量,无论怎么写都没法赋值,刚开始怀疑js有错但是ie没有反应过来,多次清缓存、部程序都没效果。。。。。。最后只好一行一行的alert看原因出在哪里;奇怪的是加上了alert之后就可以赋值,删掉alert后就又不可以了。百度了一下发现是因为ajax默认是异步执行的,也就是并没有等待请求完毕就开始执行下一行js语句了,导致赋值为null。 如
关于jquery中的ajax调取数据成功回调函数,失败回调函数
关于jquery中的ajax调取数据成功回调函数,失败回调函数,及跨域的问题
如何按照顺序执行异步ajax的回调函数
之前在业务上遇到了一个需求,需要有依赖顺序地执行不定数量的ajax请求到服务器。 我们知道一般来说JS的异步ajax的回调函数的执行顺序是无法保证的。 我在jQuery的基础上使用了队列和递归的方法初步实现了顺序执行异步ajax请求的回调函数。 如有错误,欢迎批评和指正 :) 关于jQuery的Deferred对象的说明和使用,可以参考文章: http://www.ruanyifeng.
JS加载不出来 必须alert才可以 alert另一种功能
BEGIN; 今天在引入百度编辑器时,发现百度编辑器加载不出来。 代码是这样的: var editor = new baidu.editor.ui.Editor({    textarea: 'content' }); editor.render('editor_content'); 开始以为自己写法有问题,然后试试alert下editor,没错,的确alert出了一个ob
jQuery:多个AJAX/JSON并行请求对应一个回调函数处理方法$.when
我知道这些函数都是异步执行并且会延迟一段时间返回,所以我想知道是否有一种方法,可有使多个AJAX/JSON并行请求,再由单个回调处理,就像JS加载器 curljs 所做的那样。 很幸运! 通过jQuery.when, 我可以并发地加载多个异步请求,只执行一次回调! $.when( $.getScript('/media/js/wiki-min.js?build=21eb633'),