【发布时间】:2019-09-14 16:35:59
【问题描述】:
我正在尝试建立一个基本的单页网上商店(产品图片,onclick = "addtocart()" 和一个“购买”按钮onclick="buyprem()"。
购买时,JSON 通过 Websocket 发送到我的 Java 应用程序。
购买后,我想重置代表订单的JSON。但是每当我这样做时,都会发送默认的JSON。
json = {
products: [],
composite: false,
premium: false,
}
i = 0;
function addtocart(name) {
setTimeout(function() {
var elem = document.getElementById(name);
elem.innerHTML = "";
}, 2000);
document.getElementById(name).innerHTML = i;
json.products[i] = name;
i = i + 1;
}
function buyprem() {
json.premium = true;
var websocket = new WebSocket("ws://localhost:4444");
console.log(JSON.stringify(json))
websocket.onopen = () => {
websocket.send(JSON.stringify(json));
}
//--------------------------
json = {
products: [],
composite: false,
premium: false,
}
i = 0;
//--------------------------
websocket.close;
}
当我注释掉标记的部分时,一切正常,Java 得到正确的JSON。
但是当我以这种方式重置json 变量时,Java 得到:
Message from client: {"products":[],"composite":false,"premium":false}
(标记代码注释掉:
Message from client: {"products":["dog","donatello","twitch"],"composite":false,"premium":true}
其中 dog、donatello 和 twitch 是产品的名称)
【问题讨论】:
-
你的函数
buyprem()使用 assync 命令,这就是原因。
标签: javascript json websocket