【问题标题】:How resolve TypeErrors for SignalR如何解决 SignalR 的 TypeErrors
【发布时间】:2014-10-03 15:15:36
【问题描述】:

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

  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">

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

【问题讨论】:

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

标签: javascript c# jquery asp.net signalr


【解决方案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);

如果它不起作用,请删除所有代码并尝试显示 alert(jQuery("h1").text());像这样:

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

【讨论】:

  • 亲爱的西蒙,感谢您的回复和帮助。我根据您的建议更改了脚本,但我仍然收到typeError,例如TypeError: $ is undefined ``TypeError: $.connection is undefined。请进一步建议,我可能会出错。
  • jquery 必须是您在页面中添加的第一个脚本!
  • 非常感谢您的建议和帮助。以您的回答为指导,帮助我诊断出我的问题,并设法解决了问题。非常感谢您的时间和帮助。非常感谢。
  • 没问题,编码愉快!
【解决方案2】:

您的脚本标签顺序错误。你需要在 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">

【讨论】:

    【解决方案3】:

    非常感谢大家的建议和帮助。

    我设法通过使用以下脚本解决了问题:

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多