gpt4 book ai didi

javascript - 返回的 socket.io 对象在 client.js 的范围之外不可用

转载 作者:行者123 更新时间:2023-11-29 12:44:10 24 4
gpt4 key购买 nike

我有一个client.js和一个server.js,在server.js中我连接到mysql表,并将查询从客户端发送到服务器。当我将查询结果放入 socket.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>

服务器.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);
});
});

客户端.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);
}

关于javascript - 返回的 socket.io 对象在 client.js 的范围之外不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com