【发布时间】:2017-12-21 02:48:31
【问题描述】:
我使用以下代码发出查询结果;
io.on('connection', function(socket) {
socket.on('socketfabrika', function(fabrika) {
console.log();
console.log("**********************************");
console.log("Selected Fabrika: " + fabrika);
console.log("**********************************");
console.log();
connection.query("SELECT kumes FROM report WHERE fabrika = ? GROUP BY kumes DESC ", fabrika, function(err, rows) {
if (err) console.log(err);
else {
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
console.log("**********************************");
console.log("Possible kumes: " + row.kumes);
console.log("**********************************");
io.emit("sel_kumes", row.kumes);
}
}
});
});
});
然后,在客户端,我尝试在选择框中显示查询结果,
<form id="form_kumes">
<select multiple>
<option id="sel_kumes"></option>
</select>
</form>
但是当我向选择框发出数据时,它总是在选择框中并排添加新值,
<script type="text/javascript">
socket.on('sel_kumes', function(rows) {
console.log(rows);
$('#sel_kumes').append($('<option></option>').text(rows));
});
</script>
因为这条线;
$('#sel_kumes').append($('<option></option>').text(rows));
如果我将脚本更改为;
<script type="text/javascript">
socket.on('sel_kumes', function(rows) {
console.log(rows);
$('#sel_kumes').text(rows);
});
</script>
然后,选择框只显示一个结果。
如何显示从服务器获得的所有结果(问题的第一部分),然后刷新选择框如果发出新值?(问题的第二部分)
【问题讨论】:
-
你能显示
console.log("Possible kumes: " + row.kumes);的输出吗 -
输出是;
Possible kumes: 2和Possible kumes: 1。可能我只用这条线发出一次;io.emit("sel_kumes", row.kumes); -
io.emit()发出相同次数的循环运行。您希望输出如何显示在选择框上? -
我想在选择框上同时看到“1”和“2”,但现在只显示“1”。如果我使用
append()并且新数据出现,则添加到选择框的值并排为“1”和“2”,但是当另一个数据出现时,“1”和“2”仍然存在,并且新值添加到它们的一侧。我只想查看最后调用的数据,但不仅仅是其中一个,而是全部。
标签: javascript jquery html node.js socket.io