我在一个独立的测试网站中使用了signalR聊天应用程序(如本教程http://sergiotapia.com/2011/09/signalr-with-mvc3-chat-app-build-asynchronous-real-time-persistant-connection-websites/所示)并且一切运行良好。
我现在正试图将它纳入我的大项目中。
现在不幸的是我的大项目定义了一个body onload函数,所以我不使用标准的jquery $(function(){});在页面加载时执行东西的语法。到目前为止,这个问题并不是太多,大多数jquery插件和脚本都是在我的body onload调用的函数中执行的。
但由于某种原因,我的signalR代码没有执行 它与上面列出的完全相同的代码,仅在我的身体负荷上调用 页面加载,发送到/ signalr / negotiate(返回url和clientID)
在我的示例应用程序中,然后它会连续发送到/ signalr / connect
在我的其他应用程序中,它只是一个单一的到达目前正在进行的页面
它没有使帖子连接。
有没有办法手动调用它? 这是页面的来源不起作用。 请注意,我没有引用JQuery本身的原因是因为它加载在我的母版页中。 JQuery出现了。
<script src="/public/javascript/jquery.signalR.min.js">
<script src="/public/javascript/json2.js">
<script type="text/javascript" src="/signalr/hubs">
<div>
<input type="text" id="msg" />
<input type="button" id="broadcast" />
<ul id="messages"></ul>
</div>
<script type="text/javascript">
function ExecuteOnLoad() {
// Proxy created on the fly
var chat = $.connection.chat;
// Declare a function on the chat hub so the server can invoke it
chat.addMessage = function (message) {
$('#messages').append('<li>' + message + '</li>');
};
$("#broadcast").click(function () {
// Call the chat method on the server
chat.send($('#msg').val());
});
// Start the connection
$.connection.hub.start();
}
</script>
编辑:这是聊天中心
public class Chat : SignalR.Hubs.Hub
{
public void Send(string message)
{
//Call the addMessage method on all clients.
Clients.addMessage(message);
}
}
DOUBLE EDIT:好的,我已经在我的mvc项目中创建了一个标准的html页面并再次连接了onload事件,一切正常。问题似乎是当我打电话
时,投票似乎不起作用$.connection.hub.start();
而是在获取当前网址并在get请求中再次返回页面。
答案 0 :(得分:3)
问题与我提出的问题无关 我认为这可能与onload功能有关,但事实并非如此 问题是因为我的页面引用了Jquery.Validate插件 我使用的版本是1.7,我更新到1.9的插件,它工作正常。