[英]Call JavaScript from function based on condition
我有一個我構建的 jQuery 模態系統,如果用戶輸入的用戶名或密碼無效,我想觸發模態彈出窗口。 我需要從 ASP 中的 C# 代碼隱藏進行這些檢查,然后如果存在無效的用戶名或密碼,則觸發我的 JavaScript 函數: showModal("errorDiv")
。
這可能嗎?
我不想將 JavaScript 綁定到按鈕單擊,而是以單擊按鈕時的代碼塊為條件。
所以基本上
btnSubmit_OnClick(sender, e) {
if (Username.Exists())
// Continue on
else
call showModal("errorDiv");
}
有什么幫助嗎?
看看ScriptManager.RegisterStartupScript方法,它允許您在客戶端執行 JavaScript,當您的異步請求在控件上結束時,此方法會將您的 JavaScript 附加到服務器端響應:
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "showModalScript",
"showModal('errorDiv');", true);
如果您沒有使用 MS Ajax UpdatePanels 進行部分頁面呈現,並且您的回傳是正常的,請查看ClientScriptManager.RegisterClientScriptBlock :
ClientScript.RegisterStartupScript(GetType(), "showModalScript",
"showModal('errorDiv');", true);
無法從 Web 服務器“直接”調用 JavaScript 函數。 服務器只能生成由瀏覽器顯示的 HTML 響應。
Web 服務器生成的 HTML 響應可以包含生成的 JavaScript。 因此,我想您可能想要做的是從btnSubmit_OnClick
中編寫一些 JavaScript,這將在頁面加載時觸發對話框。
我對 ASP 的機制了解不多,無法在這方面為您提供幫助,但希望這能稍微解決問題。
實現此目的的一種方法是從 C# 向您的頁面發出一個 javascript 變量。 然后設置一個 javascript 例程,以便在使用 jQuery 加載頁面時運行,檢查該變量並調用 showModal("errorDiv")。
我不確定您要在這里完成什么。 在我看來,您正試圖從 JavaScript 中調用 ASP 函數。 問題是您的 ASP 在服務器上運行,而 JavaScript 在客戶端上運行。
您需要創建一個返回身份驗證結果的 ASP 頁面。 然后你使用類似這樣的東西來評估它:
.get('/urlto/authpage.asp', function(data) {
if (data='Authorized') {
do something;
}
else {
showModal('errorDiv');
}
在這種情況下,我假設您的 ASP page
在獲得授權后僅返回Authorized
。
.get()
使用引號中的 URL 調用遠程服務器。 第二個參數是返回結果時調用的函數。 該函數的第一個參數是該 Web 請求的文本。
有關.get()
的更多信息:http: //docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype
希望我能正確閱讀你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.