簡體   English   中英

根據條件從函數中調用 JavaScript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM