function login() {
var User_ID = $('#login_user').val();
var User_PSW = $('#login_psw').val();
//var User_PSW = $('#des_1').text();
//alert(User_PSW );
$.ajaxSetup({ cache: false });
$.ajax({
type: 'post',
url: "ashx/HdlChkSession.ashx",
data: 'ID=LogIn&User_ID=' + User_ID + "&User_PSW=" + User_PSW,
success: function (RntValue) {
var data = eval('(' + RntValue + ')');
if (data.success) {
parent.clearTime(); //將有設定setTimeout清除
parent.chkSession(); //登入後開始啟動setTimeout()檢查是逾時
parent.createMenu(data.User_ID, data.User_NM);
}
else {
alert('帳號密碼錯誤!!!');
}
},
async: false,
error: function () { alert('Ajax檔案傳輸問題'); }
})
}
如何在上述程式中加入document.all["BtnJia"].click();
但必須先執行document.all["BtnJia"].click();取得值再執行原本 login()裡面的內容??
好久沒看到document.all了,既然已經用了jquery,怎麼不使用?
另外,是否在BtnJia的onclick事件處理函數中呼叫login()就能解決你的問題?
您好
請教要如何在BtnJia的onclick事件處理函數中呼叫login(),小弟我本身是網管的,對這一塊是在不是很熟悉,大部分都是東拼西湊來的
先問一下,你呼叫
document.all["BtnJia"].click();
是要做什麼?
裡面是負責將字串加密,然後傳給前端的label,javascript在取得加密後的值
聽不懂XD
你可以執行觸發他click的事件(click()),表示他的onclick有一個事件處理函數在做字串加密這件事情。不過我不知道所謂的「前端的label」是什麼...這些事情看起來都在前端發生,都是用javascript在處理,所以我不知道「javascript在取得加密後的值」是怎麼回事...
前端有一個asp.net textbox,BtnJia的onclick事件會將textbox的值加密後,我前端還有一個label,label會等於加密的值,我在javascript的 var User_PSW 會取得label的再送到伺服器端做驗證
看起來你是用WebForm...
WebForm的流程是這樣:
所以...這個你要取的值,已經先送到伺服器加密處理過,然後加到Label中,再重新繪製出頁面。然後你又要呼叫login(),同時把這個加密過的值再送回伺服器?剛剛這個過程中,明碼往伺服器送了一次,然後加密過值從伺服器收到,再用login()送出,總共兩次。這樣是你要的流程嗎?
是的,感覺好像有點多此一舉,不過我目前也想不到更好的做法
這樣...你用開發工具看一下,Label的html(在我的機器上是用span實作的)的id屬性應該是固定的,你可以用瀏覽器的開發者工具看一下你要取的東西是怎麼放在Label,然後研究一下看看要怎麼取...
另外,透過Label來取值有點怪,不妨參考這個:
Access JavaScript variables on PostBack using ASP.NET Code
其實我已經有取得Label的值,只是卡在一個按鈕要先後執行我的動作,目前都是加密最後才被執行
如果程式流程無法大改,就有點麻煩XD
基本上你呼叫document.all["BtnJia"].click();
之後的流程,就超過Javascript能掌握的範圍了,因為他會送出post,然後網頁重新載入,生命週期重新開始...
一種解法是,加上額外的狀態給伺服器跟前端程式做判斷。例如在網頁加入一段javascript,根據某個hidden input的值來判斷是否要在網頁載入完畢後,執行login(),並且把Label中取到的值給他。然後在呼叫document.all["BtnJia"].click();
時,去改變這個hidden input的值...等等。