我正在使用网络浏览器调试客户端代码时遇到以下错误:
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">
任何帮助都会非常有帮助。谢谢
答案 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>