jquery ajax请求同步与异步问题

时间:2022-08-28 23:36:58

默认发送ajax请求都是异动,以下设置为同步(async:false),此时是要等到ajax的回调函数success执行完毕后,才执行这个ajax之后的代码(即alert(333);return;).如此时需要根据data==1而结束整个调用这个ajax的方法,就不能在success判断return了,此时的return仅仅只是

结束这个ajax请求而不是调用这个ajax的方法,后面代码(即alert(333);return;)还是会执行下去。若想根据ajax的data判断是否结束方法,

则需要在ajax外面判断,先把ajax请求后data赋值给外部变量message,再用message==1判断是否结束此方法。

PS:一定要设置成同步,否则message有可能为undefined就无法判断了

(同步一定会等到回调函数success执行完后再执行ajax后续代码,异步的不要说回调函数success执行完,就是有可能ajax请求都没有发在它之后代码就执行了!)

var message;

$.ajax({

             type: "GET",

             url: "test.json",

     async:false,

             data: {username:$("#username").val(), content:$("#content").val()},

             dataType: "json",

             success: function(data){

                         //if(data==1) return;

message = data;

                      }

         });

if(message==1) return;

alert(333);

return;