2010-09-16 37 views
0

我已经阅读了许多不同的资源,但我仍然不确定这是不可能的,而不使用AJAX。从Codebehind调用javascript

我有加载一个div成一个模式,并说“请耐心等待”我有一个名为此功能可按loadingModal()

function loadingModal(url) 
{ 
    loadModal(...) 
} 

我需要做的只是在我有触发这个javascript函数验证了用户名和密码都是在服务器端,以便正确:

btnSubmit_OnClick(object sender EventArgs e) 
{ 
    string usr; 
    string password; 

    if (verify(usr, password)) 
    { 
      ///// TRIGGER JAVASCRIPT HERE 
      LOAD TONS OF SESSION VARIABLES 
      . 
      . 
      . 
     } 
     else 
     Show Error and Definitely Don't ever mention still loading 
} 

我知道我可以只连接到JavaScript中的OnClientClick呼叫但是它会加载加载模态,即使这是一个无效的用户名和密码

我可以从服务器端触发JavaScript执行吗?

回答

3

我可以从服务器端触发JavaScript执行吗?

否。在服务器端处理完请求后很久,JavaScript代码就在客户端(在浏览器中)进行评估。客户端和服务器端脚本在不同的地点和不同的时间运行。不可能有那种直接的互动。

如果您不想触发整页刷新,则可以使用AJAX。当您使用AJAX时,您的客户端(浏览器)将向服务器发出一个新的新请求。服务器处理此请求(例如,检查用户名和密码),并将响应(拒绝访问或访问授予)返回给客户端。然后由客户来适当地处理响应。

+0

这就是我想的,谢谢你的简洁直接的答案。 – 2010-09-16 03:33:00

0

希望这不是为时已晚......

最好的办法是增加2 ASP:面板:一与阿贾克斯加载GIF那通常在页面准备就绪之前可见,并且在该面板中具有style =“display:none”和asp:Label。

在代码隐藏的情况下,如果验证为false,则只需更改样式以显示:inline并将标签的文本设置为任何您需要的内容。当然,退出sub没有显示你的模态thingy!

下面是一个例子:

<asp:Panel ID="pnlError" runat="server" style="display:none; position:absolute; left:300; top:300; width:300;"> 
    <asp:Label ID="lblErr" runat="server" style=" color:Red;"></asp:Label> 
</asp:Panel> 

If validation = false Then 
     lblErr.Text = "Wrong user name or password or whatever!..." 
     pnlLoading.Style.Item("display") = "none" 
     pnlError.Style.Item("display") = "inline" 
     Exit Sub 
End if 

这样,你的用户会看到加载GIF,知道“东西”是poreparation,如果错了,他被警告。