考慮一段簡單的代碼
$.post( "Handle.ashx" ); window.location.href =
"Login.aspx" ; |
Handle.ashx的作用是清除Session數據,亦即把用戶註銷掉。
這裏就出現一個問題了。
也許也是因爲ajax的異步通信問題(http://hi.baidu.com/e9151/blog/item/195cc20b26c77c32b0351d6e.html),也許是因爲javascript不等待服務器響應返回就繼續執行(http://z.baidu.com/question/228355680.html?fr=qrl&cid=93&index=1),
總之最後的效果是,用戶的確重定向到了Login.aspx,但是Handle.ashx清除Session的效果沒有執行。
解決方案很二,有兩種方法:
方法一:
把所有的後續javascript語句放到jquery的成功回調函數裏面去
方法二:
把jquery的執行方式改爲同步
http://www.xueit.com/html/2009-10-21/33-1622523252812.html
function ExtAjax(pmts) { var
ajaxval = null ; var
params = "ajax=true&"
pmts; //URL參數 $.ajax({ url:
'xueit-Test.aspx' ,
//接收頁面 type:
'post' ,
//POST方式發送數據 async:
false ,
//ajax同步 data:
params , success: function(msg) { ajaxval = msg; } }); return
ajaxval; } |
http://www.iteye.com/problems/2119
$.ajaxSetup({
async:
false });
|
太坑爹了!如果不知道是這個原因,真不知道要調試到什麼時候啊啊啊啊啊啊啊啊啊!!!
原文地址:http://www.cnblogs.com/dabaopku/archive/2011/05/31/2064895.html