如何解决SignalR的TypeErrors

时间:2014-10-03 15:15:37

标签: javascript c# jquery asp.net signalr

我正在使用网络浏览器调试客户端代码时遇到以下错误:

  TypeError: $ is undefined 
  ReferenceError: $ is not defined

在调试器的“网络”选项卡中,它将JQueries脚本显示为“404”。这是否表明我的Jqueries没有被渲染/初始化

这是我的客户端代码:

     <script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/jquery.signalR-2.1.0.min.js"></script>
    <script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script>
    <script type="text/javascript">
$(function () {
    // Declare a proxy to reference the hub.          
    var notifications = $.connection.NotificationHub;
    // Create a function that the hub can call to broadcast messages.
    notifications.client.recieveNotification = function (role, descrip) {
        // Add the message to the page.                    
        $('#spanNewMessages').text(role);
        $('#spanNewCircles').text(descrip);

    };
    // Start the connection.
    $.connection.hub.start().done(function () {
        alert("Preparing to send notifications...");
        notifications.server.sendNotifications();
        alert("Notifications have been sent.");

    }).fail(function (e) {
        alert(e);
    });
    //$.connection.hub.start();
});
   </script>
   <h1>New Notifications</h1>
   <div>
      New <span id="spanNewMessages"></span> role.<br />
      New<span id="spanNewCircles"></span> descrip.<br /> 
   </div>

更新了Jquery脚本:

 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script src="~/Scripts/jquery.signalR-2.1.0.min.js"></script>
<script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">

任何帮助都会非常有帮助。谢谢

3 个答案:

答案 0 :(得分:1)

$是jQuery的别名。如果您想使用它,您的jquery脚本必须包含在您的页面中。

只要您的jQuery脚本返回404,您将无法使用它。为了帮助您,您可以从jQuery网站加载脚本。

替换此行:

<script src="Scripts/jquery-1.10.2.min.js"></script>

这一个:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

网站上的一个好习惯是从Google cdn加载jQuery,因为它很可能会被缓存,因为许多网站都使用它:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

要确保脚本运行良好,您可以做的另一件事是确保与其他脚本没有冲突。在代码的开头添加:

jQuery.noConflict();

确保用jQuery替换每个$。

示例:

$('#spanNewMessages').text(role);

将成为:

jQuery('#spanNewMessages').text(role);

如果它不起作用,请删除所有代码,然后尝试显示警告(jQuery(“h1”)。text());像这样:

jQuery(function () { alert(jQuery("h1").text()); });

答案 1 :(得分:0)

脚本标记的顺序错误。您需要在jquery.signalr:

之前加载jquery
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.1.0.min.js"></script>
<script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script>
<script type="text/javascript">

答案 2 :(得分:0)

非常感谢所有人,感谢您的建议和帮助。

我设法通过使用脚本解决问题,如下所示:

<script src="../Scripts/jquery-1.10.2.min.js"></script>
<script src="../Scripts/jquery.signalR-2.1.0.min.js"></script>
<script src='<%: ResolveClientUrl("~/signalr/hubs") %>'></script>