返回socket.io对象在client.js的作用域之外不可用
Returning socket.io object is not usable outside the scope in client.js
我有一个client.js和一个server.js,在server.js中我连接到mysql表,并从客户端向服务器发送查询。当我将查询结果放入套接字时。on('event',function(queryResult{…}))在client.js中,我不能在该范围之外使用结果(在client.js内部但在该范围以外)
所有连接都是通过本地主机上的一个端口本地完成的
index.html:
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="includes/client.js"></script>
<body>
<div id="getQueryStr"></div>
</body>
server.js:
var io = require('socket.io').listen(3000);
var mysql = require('mysql');
.
.
.
io.sockets.on('newQuery', function(newQuery){
MySql_Connection.query(newQuery)
.on('result', function(queryResultsData){
queryResultsArr.push(queryResultsData);
})
.on('end', function(){
socket.emit('query results', queryResultsArr);
});
});
client.js:
$(document).ready(function() {
var socket = io.connect('http://localhost:3000');
var html='';
var tempStr='';
$('input#centerSearchInp').bind('keypress', function(e){
if(e.keyCode==13){
socket.on('query results', function(queryResult){
html = queryResult[0].firstName;
$('#getQueryStr').html(html); //////OK!
tempStr = html;
});
alert(tempStr); //////////NOT OK!
}
}
});
我试过使用innerText和各种各样的东西,但不管我在做什么,我就是不能在这个范围之外使用这些数据。
您必须编写一个带有警报回调的函数,
$(document).ready(function() {
var socket = io.connect('http://localhost:3000');
var html='';
var tempStr='';
$('input#centerSearchInp').bind('keypress', function(e){
if(e.keyCode==13){
socket.on('query results', function(queryResult){
getTempStr(queryResult, function(tempStr){
alert(tempStr);
});
});
}
}
});
function getTempStr(queryResult, callback){
html = queryResult[0].firstName;
$('#getQueryStr').html(html);
callback(html);
}
我猜警报显示了一个空框。您在哪里导入"server.js"文件?
您可能希望尝试不使用"var"作为tempStr的声明。
相关文章:
- Angularjs:修改js中的作用域,稍后在页面中使用
- 访问Javascript对象-Node.js的作用域问题
- Node.js作用域错误
- dust.js:在作用域部分中使用路径
- 在Angular.js中通过检查作用域变量进行过滤
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- Angular.js-从指令更新父作用域
- 如何在angular.js中为http控制器添加作用域
- JavaScript 作用域和 Angular JS 作用域之间的区别是什么?
- 如何从在 JS 中用作参数的匿名函数中分配外部作用域变量
- 节点.js变量声明和作用域
- JS函数/全局变量的作用域
- JavaScript 变量的作用域和下划线.js
- Node.js:在模块作用域中使用“this”运算符的上下文是什么
- iframe 中的 Angular js 作用域变量值
- 节点.js/express.js中的变量作用域
- JS:将作用域作为参数传递,将其绑定到将返回的函数
- 角度JS指令作用域变量关系
- 当我在 Node JS 中调用 modernizr.build 时,非常不寻常的作用域行为
- Angular.js-视图不't在resize事件中更改作用域变量时更新