JS中AJAX執行順序解決問題詳情(附解決辦法)

來源:互聯網
上載者:User

本篇文章主要的解釋了關於js中ajax執行順序解決的問題,現在讓我們來看看這篇關於ajax的執行順序解決的文章吧

在JS中我們會遇到執行順序的問題,尤其是AJAX的執行順序,js中預設的執行順序是從上往下執行。

看下面的一段代碼

    callback:function(value, validator, $field){$.ajax({  url : window.ctx+"/sys/manager/validateLoginName",  data:{loginName:value},  type : 'post',  dataType : "json",  async:true,    success: function(result){  if(result!=null)  globalVariable.flag=result;  alert(1)       }});  alert(2)  if(globalVariable.flag!=1)return true;  if(globalVariable.flag==1)return false;  }

由於這裡的AJAX是非同步請求,所以在瀏覽器中會先彈出2在彈出1

這樣就會出現問題 假如flag預設是0,在執行完AJAX之後會變成1,那麼if語句其實是用0去做的判斷,與我們的目的不相符,我們想要的是用AJAX執行完之後賦值的flag去做if判斷(想看更多就到topic.alibabacloud.comAJAX開發手冊欄目中學習)

解決:

第一種方法

之所以出現這樣的問題是因為AJAX採用了非同步請求,所以如果我們想先彈出1再彈出2隻需要把AJAX改為同步即可,也就是將async改為false

這樣如果AJAX沒有執行完頁面會出現假死狀態,停止往下執行,只有當AJAX回調走完以後才會往下走

當然我們使用AJAX就是為了非同步,所以上面的方法是遇到特殊的需要了可以這樣處理

第二種方法

第二種辦法是比較常用的

例如下面一段代碼

function test(){$.ajax({  url : window.ctx+"/sys/manager/addUserRole",  data:formData,  type : 'post',  dataType : "json",          processData:false,          contentType:false,  success: function(result){  if(result!=null){  testCallback();  }}});         test2(); }function testCallback(){alert(1)}function test2(){alert(2)}

AJAX是非同步,我們希望先彈出1再彈出2我們只需要把test2放在test的回呼函數中即可

像這樣

function test(){$.ajax({  url : window.ctx+"/sys/manager/addUserRole",  data:formData,  type : 'post',  dataType : "json",      processData:false,      contentType:false,  success: function(result){  if(result!=null){  testCallback();  }}});}function testCallback(){alert(1)test2()}function test2(){alert(2)}

本篇文章到這就結束了(想看更多就到topic.alibabacloud.comAJAX使用手冊欄目中學習),有問題的可以在下方留言提問。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.