带有多个Jquery Ajax的SignalR在同一页面上调用

时间:2016-12-26 11:09:42

标签: jquery asp.net ajax model-view-controller signalr

我在我的mvc应用程序中嵌入了SignalR以进行实时通知。 一切正常,然后出现了这个问题,我在布局页面中插入了下面的代码,子页面也有一些ajax调用,在各自的页面上填充kendogrid。当使用signalR时,那些ajax调用不会运行。请帮我解决这个问题。以下是代码

<script src="~/Scripts/jquery-1.6.4.min.js"></script>
    <script src="~/Scripts/jquery.signalR-2.2.1.js"></script>
    <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
    <script src="/signalR/hubs"></script>
    <script type="text/javascript">

        $(function () {

            // Proxy created on the fly
            var job = $.connection.signalRHub;

            // Declare a function on the job hub so the server can invoke it
            job.client.displayStatus = function () {
                getData();
            };

            // Start the connection
            $.connection.hub.start();
            getData();
        });
        $.noConflict();
        function getData() {
            var $tbl = $('#lastNotify');

            $.ajax({
                type: "POST",
                url: "/TeacherConsole/GetData",
                contentType: "application/json; charset=utf-8",
                dataType: "JSON",
                success: function (data) {
                    //data = JSON.parse(data.d);
                    console.log(data);
                    // if (Object.keys(data).length > 0) {
                    var newdata = JSON.parse(JSON.stringify(data || null));

                    var rows = [];
                    for (var i = 0; i < newdata.length; i++) {
                        console.log(newdata[i].Body);
                        $tbl.empty();
                        $('#lastNotify').append(newdata[i].Title);
                    }
                    $tbl.append(rows.join(''));
                    //}
                },
                error: function (request, status, error) {
                    console.log(error);
                    console.log(request.responseText);
                }
            });
        }
    </script>



 public ActionResult GetData()
        {
            var view = new IndexTeacherConsoleView();
            this.FillBaseView(view);
            string userID = view.BaseUserId;

            using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString))
            {
                connection.Open();
                using (SqlCommand command = new SqlCommand(@"SELECT Top 1 [Title],[Body] FROM [SMSDB_NEW].[dbo].[UserNotifications] where to_id='" + userID + "' and isRead=0 order by CreationDate desc", connection))
                {
                    command.Notification = null;
                    SqlDependency.Start(ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString);
                    SqlDependency dependency = new SqlDependency(command);
                    dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);

                    if (connection.State == ConnectionState.Closed)
                        connection.Open();

                    using (var reader = command.ExecuteReader())
                    {
                        var read = reader.Cast<IDataRecord>()
                            .Select(x => new NotificationProperties()
                            {
                                Title = x.GetString(0),
                                Body = x.GetString(1),
                            }).ToList();
                        return Json(read);
                    }
                }
            }
        }
        private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
        {
            SignalRHub.Show();
        }

0 个答案:

没有答案