我有一個client.js和server.js,在server.js我連接到mysql表,併發送查詢從客戶端到服務器。因爲我得到的查詢結果到socket.on('事件',函數(queryResult {...}) 在client.js我不能使用該範圍以外的結果(在client.js內但在該範圍之外)返回的socket.io對象是不可用的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和所有種類的東西,但沒有試過metter我在做什麼,我只是不能使用這個範圍以外的數據。
當你'警報(tempStr);'的'查詢results'事件可能沒有發射,所以它的價值仍然是空的。 – cameron 2014-09-05 10:31:33
但html和tmpStr是全局變量,而queryResult [0] .firstName保存的值是肯定的,因此具有html var,那麼爲什麼它不能用作啓動字符串呢? – shmnsw 2014-09-05 10:37:05
如果如你所說,我該如何解僱它? – shmnsw 2014-09-05 10:38:57