首頁 >web前端 >js教程 >在Ajax的請求中async:false與async:true有什麼區別

在Ajax的請求中async:false與async:true有什麼區別

php中世界最好的语言
php中世界最好的语言原創
2018-04-02 15:20:361825瀏覽

這次帶給大家在Ajax的請求中async:false與async:true有什麼區別,在Ajax的請求中使用async:false與async:true的注意事項有哪些,下面就是實戰案例,一起來看一下。

實例如下:

function test(){
  var temp="00";
  $.ajax({
    async: false,
    type : "GET",
    url : 'userL_checkPhone.do',
    complete: function(msg){
      alert('complete');
    },
    success : function(data) {
      alert('success');
      temp=data;
      temp="aa";
    }
  });
  alert(temp);
  }

#UserLAction中checkPhone()方法

  public void checkPhone() throws IOException {
    this.getServletResponse().setContentType("text/html; charset=UTF-8");
    this.getServletResponse().setHeader("Cache-Control", "no-cache");
    PrintWriter out = this.getServletResponse().getWriter();
    out.print("true");
  }

async: false,(預設是true);

當async: false為同步,這個test()方法中的Ajax請求將整個瀏覽器鎖死,

#只有userL_checkPhone .do執行結束後,才可以執行其它操作。

所以執行結果是先alert('success'); alert('complete'); alert("aa");

當async: true 時,ajax請求是異步的。但其中有個問題:test()中的ajax請求和其後面的操作是異步執行的,那麼當userL_checkPhone.do還未執行完,就可能已經執行了ajax請求後面的操作,

所以結果是alert('success'); alert('complete'); alert("00");

這樣就會發現alert("success")和alert(temp)幾乎是同步執行,所以temp就是初始化的值temp = "00",而不是  temp="aa";

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Ajax+mysql做出留言板的功能

ajax實作資料分頁查詢的步奏詳解

以上是在Ajax的請求中async:false與async:true有什麼區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn