我在我的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();
}