【问题标题】:How to display javascript message based on which control fired AJAX?如何根据触发 AJAX 的控件显示 javascript 消息?
【发布时间】:2009-04-03 13:58:17
【问题描述】:

我试图弄清楚当从实际保存表单的控件进行 AJAX 调用时,如何在屏幕上显示“已保存”消息(由 JQuery 提供淡出效果)。表单相对复杂,有 5 个单独的 UpdatePanel,其中一些(但不是全部)控件将执行回发以保存表单。

我知道哪些控件应该显示保存消息。但是,当 AJAX 请求完成时,我不知道如何识别这些控件。我想我需要在下面的“endRequestHandler”中添加我的逻辑,但我可能是错的。

修订 这是我可能想在我的整个网站上使用的东西。我需要提出一种通用机制来声明性地指示控件应在作为回发源时显示“已保存”消息。我可以在控件上放置一些可以在 InitializeRequestHandler 或 EndRequsetHandler 中访问的东西(见下文)吗?也许我应该添加一个可以使用 JQuery 找到的自定义属性? 结束修订

如果您需要更多信息,请告诉我。提前感谢您的帮助!

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);

function endRequestHandler(sender, args) {
  //--check to see if the sender should cause the "Saved" message to display
    //--use JQuery Fadeout effect to make the "Saved Message" display on the screen
    //  temporarily
}

【问题讨论】:

    标签: .net javascript ajax


    【解决方案1】:

    您可以先存储发起 ajax 调用的人员,然后在 end_request 中取消设置存储它的变量。

    我假设有一个 begin_request 事件给你这个,如果没有,你可以让你的元素首先调用一个函数来设置谁在发起调用,然后让函数执行回调。

    编辑

    您回答了自己的问题。向控件添加自定义属性。

    【讨论】:

    • 感谢您的反馈。我认为如果我可以对应该导致保存的控件进行硬编码,那将是可行的。我稍微修改了我的问题,以更好地表明我的意图。
    【解决方案2】:

    为了解决这个问题,我在母版页上放置了一个隐藏字段,id='hfSaveMessageText'。这将保存要显示的消息(如果有)。我还在 MasterPage 上放置了一个 id='mpSaveSpot' 和适当样式的跨度。这是我的消息将显示的地方。

    然后,我创建了一个服务器端方法,该方法接受 System.Web.UI.Page 和要显示的字符串消息。该方法获取对母版页上隐藏字段的引用,并将值设置为用户传入的消息(例如:“已删除记录”或“已发送电子邮件”)。

    以下 javascript 在每个异步回发 endRequest 上运行,以查看是否有需要显示的消息。如果是这样,我会显示消息并在 4.5 秒内将其淡出(由 JQuery fadeOut 提供)。

    //--Get an instance of the PageRequestManager so we can
    //  designate an end-request handler
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    //--designed the displayFadeoutMessage as the end request handler
    prm.add_endRequest(displayFadeoutMessage);
    
    function displayFadeoutMessage() {
        //--if there is a message to display then show it
        if ($("#ctl00_hfSaveMessageText").attr("value") != "") {
            //--add a span to the placeholder span and then fade it out 
            //  over 4.5 seconds
            $("#mpSaveSpot").append("<span id='spanFadeoutMessage' style='background-color:#ddd;'>" + $("#ctl00_hfSaveMessageText").attr("value") + "</span>").fadeOut(4500, function() {
                    //--once the message is faded out then clear the message hidden
                    //  field and clear out the message span
                    $("#ctl00_hfSaveMessageText").attr("value", "");
                    $("#mpSaveSpot").empty();
            });
        }
    }
    

    现在,无论我在哪个页面上,我都有一个可重复使用的机制来在我的网站上显示精美的淡出消息。问题解决了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      相关资源
      最近更新 更多