Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net中向用户发送通知_C#_Javascript_Jquery_Asp.net - Fatal编程技术网

C# 在asp.net中向用户发送通知

C# 在asp.net中向用户发送通知,c#,javascript,jquery,asp.net,C#,Javascript,Jquery,Asp.net,我尝试在asp.net中发送通知 当管理员登录并单击添加消息时,当用户登录时,此消息发送给用户,然后出现弹出通知 我试试看 <input class="add_message" type="text" value="type your message" name="add_message"> </input> <input type="button" value="add message" önclick="sNotify.addToQueue($(".

我尝试在asp.net中发送通知

当管理员登录并单击添加消息时,当用户登录时,此消息发送给用户,然后出现弹出通知

我试试看

<input class="add_message" type="text" value="type your message" name="add_message">
</input>
 <input type="button" value="add message" 
    önclick="sNotify.addToQueue($(".add_message").attr("value"))"></input>

   <script type='text/javascript'>
   sNotify.addToQueue("You can add your message here."); 

   sNotify.timeOpen = 10;
这是js

var sNotify = {

    timeOpen: 10,   //change this number to the amount of second you want the message opened

    queue: new Array(),
    closeQueue: new Array(),

    addToQueue: function(msg) {
        sNotify.queue.push(msg);
    },

    createMessage: function(msg) {

        //create HTML + set CSS
        var messageBox = $("<div><span class=\"sNotify_close\">x</span>" + msg + "</div>").prependTo("body");
        $(messageBox).addClass("sNotify_message");

        sNotify.enableActions(messageBox);
        sNotify.closeQueue.push(0);

        return $(messageBox);

    },

    loopQueue: function() {
        //pop queue
        if (sNotify.queue.length > 0) {

            var messageBox = sNotify.createMessage(sNotify.queue[0]);
            sNotify.popMessage(messageBox);

            sNotify.queue.splice(0,1);

        }

        //close queue
        if (sNotify.closeQueue.length > 0) {
            var indexes = new Array();

            for (var i = 0; i < sNotify.closeQueue.length; i++) {
                sNotify.closeQueue[i]++;

                if (sNotify.closeQueue[i] > sNotify.timeOpen) {
                    indexes.push(i);
                }
            }

            //now close them
            for (var i = 0; i < indexes.length; i++) {
                var buttons = $(".sNotify_close");
                sNotify.closeMessage($(buttons[($(buttons).length - indexes[i]) - 1]));
                sNotify.closeQueue.splice(indexes[i],1);    
            }

        }

    },

    enableActions: function(messageBox) {
        //reset timer when hovering
        $(messageBox).hover(
            function() {
                var index = ($(this).nextAll().length - 1);
                sNotify.closeQueue[index] = -1000;
            },
            function() {
                var index = ($(this).nextAll().length - 1);
                sNotify.closeQueue[index] = 0;
            }
        );

        //enable click close button
        $(messageBox).find(".sNotify_close").click(function() {
            sNotify.closeMessage(this);
        });
    },

    popMessage: function(messageBox) {
        $(messageBox).css({
            marginRight: "-290px",
            opacity: 0.2,
            display: "block"
        });

        var height = parseInt($(messageBox).outerHeight()) + parseInt($(messageBox).css("margin-bottom"));

        $(".sNotify_message").next().each(function() {
            var topThis = $(this).css("top");

            if (topThis == "auto") {
                topThis = 0;
            }

            var newTop = parseInt(topThis) + parseInt(height);

            $(this).animate({
                top: newTop + "px"
            }, {
                queue: false,
                duration: 600
            });
        });

        $(messageBox).animate({
            marginRight: "20px",
            opacity: 1.0
        }, 800);
    },

    closeMessage: function(button) {
        var height = parseInt($(button).parent().outerHeight()) + parseInt($(button).parent().css("margin-bottom"));

        $(button).parent().nextAll().each(function() {
            var topThis = $(this).css("top");

            if (topThis == "auto") {
                topThis = 0;
            }

            var newTop = parseInt(topThis) - parseInt(height);

            $(this).animate({
                top: newTop + "px"
            }, {
                queue: false,
                duration: 300
            });
        });

        $(button).parent().hide(200, function() {
            $(this).remove();
        });
    }

}

setInterval("sNotify.loopQueue()", 900);
var sNotify={
timeOpen:10,//将此数字更改为您希望打开邮件的秒数
队列:新数组(),
closeQueue:新数组(),
addToQueue:函数(msg){
sNotify.queue.push(msg);
},
createMessage:函数(msg){
//创建HTML+设置CSS
var messageBox=$(“x”+msg+).prependTo(“正文”);
$(messageBox).addClass(“sNotify_消息”);
sNotify.enableActions(messageBox);
sNotify.closeQueue.push(0);
返回$(messageBox);
},
loopQueue:function(){
//弹出队列
如果(sNotify.queue.length>0){
var messageBox=sNotify.createMessage(sNotify.queue[0]);
sNotify.popMessage(messageBox);
sNotify.队列.拼接(0,1);
}
//封闭队列
如果(sNotify.closeQueue.length>0){
var索引=新数组();
对于(变量i=0;isNotify.timeOpen){
指数推送(i);
}
}
//现在关闭它们
对于(var i=0;i
这是按钮点击代码

<input class="add_message" type="text" value="type your message" name="add_message"></input>

<input type="button" value="add message" onclick="sNotify.addToQueue($(".add_message").attr("value"))"></input>


假设有两个表单abc.aspx和def.aspx表单,我在abc.aspx中编写了代码,它可以工作,当管理员按下按钮时,这里会出现弹出窗口,但我想在管理员按下按钮时,在这里发送通知到def.aspx表单,这是用户表单。

很抱歉,这应该是一个注释,但还没有足够的代表


我注意到的第一件事是onclick作为aö而不是o-它可能就这么简单,但正如susai所说的-更多的代码会很有帮助

您在管理页面(比如abc.aspx)中使用了sNotify插件。正如您所说,您并没有在用户页面(比如def.aspx)中实现这一点。sNotify插件不会自动将通知填充到未实现的其他页面


要实现您的目标,请将所有通知保存在管理页面中。在用户页面中实现sNotify插件。使用服务器推送或拉送技术读取已保存的通知,并将其添加到sNotify队列中,以便管理员执行操作时,通知将显示在用户页面中。

您是否可以在节中共享内容。如果可能,只需发布完整版本的代码。@susai plaese检查我的更新问题,了解如何保存通知。。。你们所说的服务器推送是什么意思?回答你们的第一个问题,使用数据库并将它们存储在服务器中。您可以从您的用户页获取它。在回答第二个问题时,服务器推送技术可帮助服务器自动将数据推送到连接的客户端,而无需客户端发出任何请求。请参考websocket-。注意:不强制使用服务器推送。您也可以使用服务器拉取,即正常请求响应。根据您的需要,服务器推送套装。
var sNotify = {

    timeOpen: 10,   //change this number to the amount of second you want the message opened

    queue: new Array(),
    closeQueue: new Array(),

    addToQueue: function(msg) {
        sNotify.queue.push(msg);
    },

    createMessage: function(msg) {

        //create HTML + set CSS
        var messageBox = $("<div><span class=\"sNotify_close\">x</span>" + msg + "</div>").prependTo("body");
        $(messageBox).addClass("sNotify_message");

        sNotify.enableActions(messageBox);
        sNotify.closeQueue.push(0);

        return $(messageBox);

    },

    loopQueue: function() {
        //pop queue
        if (sNotify.queue.length > 0) {

            var messageBox = sNotify.createMessage(sNotify.queue[0]);
            sNotify.popMessage(messageBox);

            sNotify.queue.splice(0,1);

        }

        //close queue
        if (sNotify.closeQueue.length > 0) {
            var indexes = new Array();

            for (var i = 0; i < sNotify.closeQueue.length; i++) {
                sNotify.closeQueue[i]++;

                if (sNotify.closeQueue[i] > sNotify.timeOpen) {
                    indexes.push(i);
                }
            }

            //now close them
            for (var i = 0; i < indexes.length; i++) {
                var buttons = $(".sNotify_close");
                sNotify.closeMessage($(buttons[($(buttons).length - indexes[i]) - 1]));
                sNotify.closeQueue.splice(indexes[i],1);    
            }

        }

    },

    enableActions: function(messageBox) {
        //reset timer when hovering
        $(messageBox).hover(
            function() {
                var index = ($(this).nextAll().length - 1);
                sNotify.closeQueue[index] = -1000;
            },
            function() {
                var index = ($(this).nextAll().length - 1);
                sNotify.closeQueue[index] = 0;
            }
        );

        //enable click close button
        $(messageBox).find(".sNotify_close").click(function() {
            sNotify.closeMessage(this);
        });
    },

    popMessage: function(messageBox) {
        $(messageBox).css({
            marginRight: "-290px",
            opacity: 0.2,
            display: "block"
        });

        var height = parseInt($(messageBox).outerHeight()) + parseInt($(messageBox).css("margin-bottom"));

        $(".sNotify_message").next().each(function() {
            var topThis = $(this).css("top");

            if (topThis == "auto") {
                topThis = 0;
            }

            var newTop = parseInt(topThis) + parseInt(height);

            $(this).animate({
                top: newTop + "px"
            }, {
                queue: false,
                duration: 600
            });
        });

        $(messageBox).animate({
            marginRight: "20px",
            opacity: 1.0
        }, 800);
    },

    closeMessage: function(button) {
        var height = parseInt($(button).parent().outerHeight()) + parseInt($(button).parent().css("margin-bottom"));

        $(button).parent().nextAll().each(function() {
            var topThis = $(this).css("top");

            if (topThis == "auto") {
                topThis = 0;
            }

            var newTop = parseInt(topThis) - parseInt(height);

            $(this).animate({
                top: newTop + "px"
            }, {
                queue: false,
                duration: 300
            });
        });

        $(button).parent().hide(200, function() {
            $(this).remove();
        });
    }

}

setInterval("sNotify.loopQueue()", 900);
<input class="add_message" type="text" value="type your message" name="add_message"></input>

<input type="button" value="add message" onclick="sNotify.addToQueue($(".add_message").attr("value"))"></input>