#javascript #websocket
#javascript #websocket
Вопрос:
Ниже приведен код JavaScript для чтения свойств события:
function webSockStart() { // onclick() of a button
document.getElementById("button").disabled = true;
var ws = new WebSocket("ws://127.0.0.1:3000/websock");
ws.onmessage = function (evt) {
console.log(evt.data)
console.log(evt.data["Key"]) // undefined
console.log(evt.data["Val"]) // undefined
};
}
console.log(evt.data)
выдает строку "{"Key":"ab","Val":"cd"}"
(полученную через websocket)
var map = new Map(JSON.parse(evt.data))
выдает ошибку: Uncaught TypeError: object is not iterable(cannot read property Symbol(Symbol.Iterator))
Как преобразовать эту строку в объект карты и прочитать свойства? console.log(evt.data["Key"])
Ответ №1:
Сначала вам нужно проанализировать его, а затем получить доступ
let str = `{"data" : {"Key":"ab","Val":"cd"}}`
let obj = JSON.parse(str)
console.log(obj.data['Key'])
Комментарии:
1.@overexchange
Map
ожидает, что повторяющиеся объектыobject
не являются одним из них. я не уверен, почему вы хотите изменить объект на карту?2. Но я не могу сравнить содержимое ячеек таблицы с этими проанализированными json
rows[i].cells[0].textContent == obj.data['Key']
. Потому чтоconsole.log(obj.data['Key'])
выводитab
, но не"ab"
3. @overexchange что такое
rows[i].cells[0].textContent
?4.
var rows = myTable.getElementsByTagName("tr")
иconsole.log(rows[1].cells[0].textContent)
даетab
иconsole.log(rows[1].cells[1].textContent)
даетcd
5. @overexchange вы можете вести журнал консоли и проверять значения. или создайте рабочий пример, чем будет легче решить точную проблему