日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???? 前段時間做一個項目,而項目中所有的請求都要用jquery 中的ajax請求或者post請求,但是開始處理一些簡單操作還好,但是自己寫了一些驗證就出現問題了,比如表單提交的時候,要驗證帳號的唯一性,所以要在submit前先請求一次,驗證帳號是否已被使用,

中間有一段js如下:

?var state = false;
??? $.post(url,{username:username},function(data){
?? ??? ?if(!data){
?? ??? ??? ?$('#username').removeClass().addClass('notpass');
?????? ??? ?$('#usernameSpan').html("<font color='red'>*該帳號已被使用!</font>");
?? ??? ?}else{
?? ??? ??? ?$('#username').removeClass().addClass('pass');
?? ??? ???? $('#usernameSpan').html("<font color='green'>√ 通過</font>");
?? ??? ???? state = true;
?? ??? ?}
??? });
??? return state;

可是不管data為真還是為假,返回值均為false,讓我相當郁悶,后來在網上查了下資料,原來這是ajax異步調用導致的。

以前一直不太懂ajax異步調用的原理,后來仔細看了下別人的講解,才算明白。所謂ajax異步調用就是當用戶提交ajax請求的時候,不會等待請求的返回結果,跳過ajax代碼塊,繼續往下執行(post請求也是ajax請求的一種,是一種簡化版)。針對這段代碼,就是初始state為fasle,而發送一個post請求之后,因為不會等待返回結果,所以中間的if--else 判斷還未執行,所以返回的state此時為false。

?????? 那怎么讓它等待返回結果之后,在繼續往下執行呢?有兩種方法:

????? 第一種:在一開始把ajax請求設置為同步的,因為ajax請求默認為異步的。即把async 屬性設置為false;設置全局的代碼如下:

??? $.ajaxSetup({
??? async : false
??? });

??? 第二種是在請求中設置,即只設置某個方法為同步的,那么該方法就會等待返回結果,其它方法仍然為異步的。代碼如下:

?? $.ajax({

??????? type: "POST",

??????? async : false,

??????? url: url,

??????? success: function(data){

?????????? alert( msg );

??????? }

??? });

轉載于:https://www.cnblogs.com/wanghang/p/6298919.html

總結

以上是生活随笔為你收集整理的关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。