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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!