【问题标题】:Execute JQuery after ASP.Net Microsoft AJAX在 ASP.Net Microsoft AJAX 之后执行 JQuery
【发布时间】:2011-09-09 10:22:10
【问题描述】:

我正在尝试在 ASP.Net Microsoft AJAX 回发后执行 JQuery。

当用户单击链接时,Microsoft AJAX 用于更新数据库中的某些字段,如果成功,则会出现一个标签,通知用户已进行更改。 不幸的是,标签不是很明显,我想用它来将背景从红色淡化为白色。

问题是当标签上设置了 visible=false 时,生成的 html 不包含标签(跨度)。有谁知道如何在 ASP.Net Microsoft AJAX 回发后执行 JQuery,或其他解决方案来实现相同的效果?

【问题讨论】:

  • @Alison 是的,我正在使用 UpdatePanels,我在每个面板上都有一对多的 Microsoft AJAX 链接/方法

标签: jquery asp.net asp.net-ajax microsoft-ajax


【解决方案1】:

这是在 ASP.NET Ajax 回发之后执行随机 javascript 的方法

function executeThis(){
//code here to fade in out the label that comes


var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.remove_pageLoaded(executeThis); //job done, remove this so that it is not fired again.
}


$("link").click(function(){
                var prm = Sys.WebForms.PageRequestManager.getInstance();
                prm.add_pageLoaded(executeThis); //this will register executeThis function with MS Ajax libraries which will fire it after next posback
               //the post back happens here.
  });

【讨论】:

  • @Nikhil 我怎么知道哪个方法被触发了?
  • 将触发名为“executeThis”的方法。基本上,这个想法是用 MS Ajax 脚本注册一个回调函数(随便叫什么),并在页面加载后让脚本在下一次回发时触发该函数。
  • @Nikhil 抱歉,我重新阅读了我的评论,并且非常清楚。我的意思是我怎么知道调用了哪个 MS Ajax 方法。我只希望在单击特定链接时执行 JQuery。或者我应该将 add_pageloaded 包装在 $('linkName').clicked
  • 其实恰恰相反。我正在更新答案(希望!)解决这个问题
  • @Nikhil 有效,除非第二次单击该链接时未调用该函数。
【解决方案2】:

你可以在回发中试试这个

ScriptManager.RegisterStartupScript(Me.Form, Me.GetType(), "FunctionName", "FunctionName();", True)

这将在回发完成后调用 javascript 函数 FunctionName()

【讨论】:

    【解决方案3】:

    有点像@Nikhil 所说的,非常相似的东西,也是我经常使用的东西:

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(functionName)
    

    其中functionName 是包含您想要调用的任何内容的函数的名称。这样可以确保在重新加载/刷新页面/面板时调用该函数。

    【讨论】:

      【解决方案4】:

      这里有一些伪代码可以帮助你:

      1. 如果不成功,保持 asp:Label 可见属性 = true,但给它一个 CSS 类,显示设置为 none
      2. 在页面加载时,执行以下操作:

        ScriptManager.RegisterStartupScript(Me.Form, Me.GetType(), "ShowError", "ShowError();", True);

      3. 在您的 Javascript 中,添加以下内容:

        函数显示错误(){ $('#myLabelID').show().fadeOut(); }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2014-01-23
        • 1970-01-01
        相关资源
        最近更新 更多