我使用了npm install jquery
,我在我的server.js
中放了一些代码来检查jQuery是否存在:
io.sockets.on('connection', function(socket) {
console.log("Connection " + socket.id + " accepted.");
// Check if jQuery is loaded
if (jQuery) {
console.log("jQuery loaded!");
}
if (typeof jQuery == 'undefined') {
console.log('jQuery has not been loaded!');
}
});
当我运行server.js
时,我得到ReferenceError: jQuery is not defined
。
有没有更好的方法来检查jQuery是否已加载,或者此消息是否意味着我还没有成功安装jQuery?
修改
的 client.html 的
<body>
<script>
function send() {
var user_message = $("#message_box").val();
socket.send(user_message);
};
</script>
<input id="message_box" type="text" placeholder="Message" />
<button id="sender" onClick='send()'/>Send Message</button>
</body>
答案 0 :(得分:4)
那不是web borwser,你应该require
jQuery模块并自己定义jQuery
变量(就像你使用SocketIO一样)。
var jQuery = require('jQuery')
结帐docs了解详情。
<小时/> 的 UPD 强>
关于问题更新。
您不需要npm install jquery
使您的HTML页面中的库工作(因为这些中的javascript将在用户的浏览器中执行,而不是Node)。您需要做的是在HTML文档中包含远程脚本,如下所示:
<html>
<head>
<!-- Embedd jQuery into HTML page to make it available in browser -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
// So, browser now knows about jQuery, but don't know about anything in <body>
// We should wait, untill page will be fully loaded, and only then
// read html input values, initiate connections, etc.
$(function() {
// this code will be executed after DOM is ready
send();
});
// here is your send function
function send() {
var user_message = $("#message_box").val();
socket.send(user_message);
};
</script>
</head>
<!-- ... -->
IMO,你应该仔细阅读一些关于客户端javascript编程的教程(有或没有jQuery - 并不重要)。然后,查看有关使用Node作为站点后端的一些教程。
答案 1 :(得分:0)
您正在查看变量JQuery是否存在,在您的代码中,您还没有定义变量JQuery。 JQuery不是变量,因此它不起作用。
答案 2 :(得分:0)
您可以尝试检查window.jQuery,该窗口应该存在,因此您应该返回未定义。
我实际上会设置其他东西虽然可能像
$(function () {
Console.log( 'jQuery loaded');
});
然后,您可以在服务器上响应,但需要。
我对socket.io并不是很熟悉所以我怀疑可能有更好的方法,但这至少可以为您提供所需的信息。
答案 3 :(得分:0)
如果typeof jQuery == 'undefined'
未定义,则使用jQuery
不会崩溃,因此您可以使用以下内容:
if (typeof jQuery == 'undefined') {
console.log('jQuery has not been loaded!');
}
else {
console.log('jQuery loaded!');
}
答案 4 :(得分:0)
如果我正确理解了这个问题,你只是想确保你没有将socket.io数据发送到网络浏览器,直到 jQuery加载并准备好在浏览器上正确?如果是这种情况,那么您所要做的就是在html中添加引用jQuery的脚本标记,然后在$(document).ready
中初始化socket.io客户端。如下所示:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="socket.io/socket.io.js"></script>
<script>
$(document).ready(function() {
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
$('#news').append(data);
});
});
</script>