jq——ajax同步非同步區別
同步:相當於電路的串聯
非同步:相當於電路的並聯
Ajax同步和非同步的區別
之前一直在寫JQUERY程式碼的時候遇到AJAX載入資料都需要考慮程式碼執行順序問題。 最近的專案用了到AJAX同步。這個同步的意思是當JS程式碼載入到當前AJAX的時候會把頁面裡所有的程式碼停止載入,頁面出去假死狀態,當這個AJAX執 行完畢後才會繼續執行其他程式碼頁面假死狀態解除。
而非同步則這個AJAX程式碼執行中的時候其他程式碼一樣可以執行。
jquery的async:false,這個屬性
預設是true:非同步,false:同步。
$.ajax({
type: "post",
url: "path",
cache:false,
async:false,
dataType: "json",
success: function(json){
}
});
有了這個屬性可以相對的減少程式碼執行書序問題,但是如果用的太多,頁面假死次數太多。這樣反而導致使用者體驗不佳~!
在 這裡,async預設的設定值為true,這種情況為非同步方式,就是說當ajax傳送請求後,在等待server端返回的這個過程中,前臺會繼續 執行ajax塊後面的指令碼,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個執行緒,ajax塊發出請求後一個執行緒 和ajax塊後面的指令碼(另一個執行緒)例:
$.ajax({
type:"POST",
url:"Venue.aspx?act=init",
dataType:"html",
success:function(result){ //function1()
f1();
f2();
}
failure:function (result) {
alert('Failed');
},
}
function2();
在上例中,當ajax塊發出請求後,他將停留function1(),等待server端的返回,但同時(在這個等待過程中),前臺會去執行function2(),也就是說,在這個時候出現兩個執行緒,我們這裡暫且說為function1() 和function2()。
當把asyn設為false時,這時ajax的請求時同步的,也就是說,這個時候ajax塊發出請求後,他會等待在function1()這個地方,不會去執行function2(),知道function1()部分執行完畢。
之前一直以為只要同步就好了.其實如果同步就失去了ajax的意義.
遇到一個bug.
頁面的載入 載入中… 引用一個publish.js
function loader(m) {
var left = (window.innerWidth / 2) - 83;
var top = window.innerHeight / 2 - 60;
var height = 50;
var html =
'<div id="ajaxloader_zz" style="z-index: 9999998; position: absolute; top: 0px; left: 0; width: 100%; height: 100%; opacity: 0; "></div>' +
'<div id="ajaxloader" style="width:200px;height:100px; text-align:center;background-color:snow;border-radius:5px; position:fixed;top:' + top + 'px;left:' + left + 'px;z-index:9999999;">' +
'<table style="vertical-align:middle;text-align:center; width:100%;height:100%;">' +
'<tr><td><div style="margin-top:20px;"><img src="../images/loading.gif" /></div></td></tr>' +
'<tr><td><span style="color:black;font-family:Helvetica-Regular;font-weight:bold;font-size:16px">' + m + '</span></td></tr></table></div>';
return html;
}
//請求開始動畫
$(document).ajaxSend(function () {
alert(1);
if ($("#ajaxloader").length == 0) {
$("body").append(loader("請稍候..."));
$("#ajaxloader,#ajaxloader_zz").fadeIn("normal");0 }
});
////請求成功動畫
$(document).ajaxSuccess(function () {
if ($("#ajaxloader").length > 0) {
$("#ajaxloader,#ajaxloader_zz").fadeOut("normal");
$("#ajaxloader,#ajaxloader_zz").remove();
}
});
//請求錯誤動畫
$(document).ajaxError(function () {
if ($("#ajaxloader").length > 0) {
$("#ajaxloader,#ajaxloader_zz").fadeOut("normal");
$("#ajaxloader,#ajaxloader_zz").remove();
$("body").append(loader("請求失敗!"));
$("#ajaxloader,#ajaxloader_zz").fadeIn("normal");
setTimeout(function () { $("#ajaxloader,#ajaxloader_zz").fadeOut("normal"); $("#ajaxloader,#ajaxloader_zz").remove(); }, 1000);
}
});
頁面引用這個js.當有ajax操作時,會有請稍等…的提示
如果頁面中使用的ajax請求是同步的.在google和ie等瀏覽器上不會有此效果.改為非同步即可.
注意:新增async:false.即修改為同步了,什麼意思?(按同事解釋就是,這是等這個ajax有了返回值後才會執行下面的js。一語道破天機,怪不得以前很多ajax呼叫裡面的賦值都不起作用)。這樣等ajax給bol賦值完畢後,才執行下面的js部分。而剛剛非同步的話,還沒有來得及賦值,就已經return了。
考慮是不是因為設定為同步時,影響了publish.js中的js執行.但是火狐中又可以,哎,理解不透了.
相關推薦
jq——ajax同步非同步區別
同步:相當於電路的串聯 非同步:相當於電路的並聯 Ajax同步和非同步的區別 之前一直在寫JQUERY程式碼的時候遇到AJAX載入資料都需要考慮程式碼執行順序問題。 最近的專案用了到AJAX同步。這個同步的意思是當JS程式碼載入到當前AJAX的時候會把頁面裡
JQ Ajax 同步與異步的區別
get 發送 ldr 假死 sync 發出 timeout 執行 結果 $.ajax({ url: xml_addr, type: ‘get‘, dataType: ‘xml‘,
$.ajax 同步/非同步(async:false/true)
我覺得這個理解挺通透的: 雖然說ajax用來執行非同步請求的比較多,但有時還是存在需要同步執行的情況的。 比如:我需要通過ajax取執行請求以返回一個值,這個值在ajax後面是需要使用到的,這時就不能用非同步請求了。這時候就需要使用到async這個屬性了。 async:true,(預設)
Java中同步非同步區別
同步互動:指傳送一個請求,需要等待返回。然後才能傳送下一個請求,有等待過程; 非同步互動:指傳送一個請求,不需要等待返回,隨時可以在傳送下一個請求,不需要等待; 區別:一個需要等待,一個不需要等待,在部分情況下,我們的專案開發中都會優先選擇不需要等待的非同步互動方式; Java是一門面向物件
ajax同步非同步的坑
function companyValueULHtml(){ var faxhtml =''; var tel = ''; faxhtml += '<select style="width:100px;height:30px;" id="companyfaxc
jquery,ajax,同步非同步
文章出處:http://www.cnblogs.com/xmphoenix/archive/2011/11/21/2257651.html 谷歌瀏覽器,F12,提示: Synchronous XMLHttpRequest on the main thread is dep
同步非同步區別(I/O)原理
老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 1 老張把水壺放到火上,立等水開。(同步阻塞) 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞) 老張
Ajax同步和非同步的區別,如何解決跨域問題
同步的概念應該是來自於OS中關於同步的概念:不同程序為協同完成某項工作而在先後次序上調整(通過阻塞,喚醒等方式).同步強調的是順序性.誰先誰後.非同步則不存在這種順序性. 同步:瀏覽器訪問伺服器請求,使用者看得到頁面重新整理,重新發請求,等請求完,頁面重新整理,新內容出現,使用者看到新內容,進行下一步操作。
JQ $.ajax和$.getJson同步非同步切換
最近專案需要將一些修改較頻繁的資料,每個頁面的公有資料抽象成一個json的配置檔案,於是需要使用$.getJson讀取本地的配置檔案,但是在非同步的回撥函式中返回和全域性變數返回資料,都沒有用,經過前端同學指點,可以將非同步直接改為同步請求,經過查閱API,寫demo測試可
ajax同步和非同步有什麼區別?
同步:我的理解是一種線性執行的方式,執行的流程不能跨越。一般用於流程性比較強的程式,我們做的使用者登入功能也是同步處理的,必須使用者通過使用者名稱和密碼驗證後才能進入系統的操作。 非同步:是一種並行處理的方式,不必等待一個程式執行完,可以執行其它的任務。在程式
Ajax同步請求和非同步請求的區別
同步是指:傳送方發出資料後,等接收方發回響應以後才發下一個數據包的通訊方式。使用者填寫所有資訊後,提交給伺服器,等待伺服器的迴應(檢驗資料),是一次性的。資訊錯誤又要重新填寫!非同步是指:傳送方發出資料
ajax 同步請求和非同步請求的區別
先解釋一下同步和非同步的概念 同步是指:傳送方發出資料後,等接收方發回響應以後才發下一個數據包的通訊方式。 非同步是指:傳送方發出資料後,不等接收方發回響應,接著傳送下個數據包的通訊方式。 同步通訊方式與非同步通訊的概念 同步通訊方式要求通訊雙方以相同的時鐘頻率進行,而且準確協調,通過共享一個
深入理解ajax同步和異步的區別
深入理解ajax同步和異步的區別說明: 同步可以改變外部定義的變量值,異步可以提高加載效率 示例:a. 說明:b. 原代碼: <script> var a = 0 function loadDoc(file,async=true){ if(window.XMLHttpRequest){ // c
同步非同步,阻塞非阻塞區別聯絡
實際上同步與非同步是針對應用程式與核心的互動而言的。同步過程中程序觸發IO操作並等待(也就是我們說的阻塞)或者輪詢的去檢視IO操作(也就是我們說的非阻塞)是否完成。 非同步過程中程序觸發IO操作以後,直接返回,做自己的事情,IO交給核心來處理,完成後核心通知程序IO完成。
jquery ajax屬性async(同步非同步)
在jquery的ajax中如果我們希望實現同步或者非同步我們可以直接設定async發生為真或假即可true false,下面舉幾個jquery ajax同步和非同步例項 一.什麼是同步請求:(false) 同步請求即是當前發出請求後,瀏覽
在伺服器端判斷request來自Ajax請求 非同步 還是傳統請求 同步
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
ajax同步,非同步簡單的介紹
星期天一個人搗鼓個人網站的事情,read8686.com,如果哪位開發者又歡迎大家一起探討,在文章的有我的微信 就是這樣的一個註冊的頁面,其
Ajax的同步非同步(async屬性)
jquery中ajax方法有個屬性async用於控制同步和非同步,預設是true,即ajax請求預設是非同步請求,有時專案中會用到AJAX同步。這個同步的意思是當JS程式碼載入到當前AJAX的時候會把頁面裡所有的程式碼停止載入,頁面出現假死狀態,當這個AJAX執行完畢後才會繼續執行其他程
Qt理解同步/非同步和阻塞/非阻塞的區別
同步、非同步: 概念:訊息的通知機制解釋:涉及到IO通知機制;所謂同步,就是發起呼叫後,被呼叫者處理訊息,必須等處理完才直接返回結果,沒處理完之前是不返回的,呼叫者主動等待結果;所謂非同步,就是發起呼叫後,被呼叫者直接返回,但是並沒有返回結果,等處理完訊息後,通過狀態、通知或者回調函式來通知呼叫者,呼叫者被
ajax同步和非同步的差異
一、web中的同步和非同步: (1)同步請求:順序處理,即當我們向伺服器發出一個請求時,在伺服器沒返回結果給客戶端之前,我們要一直處於等待狀態直至伺服器將結果返回到客戶端,我們才能執行下一步操作。例如普通的B/S模式就是同步請求(注:B/S模式 也即伺服器與瀏覽器通訊主要採用HTT