【问题标题】:How to reset JSON after send correctly?正确发送后如何重置 JSON?
【发布时间】: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


【解决方案1】:

更好的做法:

function buyprem()
{
  json.premium = true

  let StrJSON  = JSON.stringify(json)

  json.products.length = 0
  json.composite       = false
  json.premium         = false
  i                    = 0

  var websocket = new WebSocket("ws://localhost:4444");
  console.log(StrJSON)
  websocket.onopen = () =>
    {
    websocket.send(StrJSON);
    }

  //--------------------------
  websocket.close();
}

因为

json = {
  products: [],
  composite: false,
  premium: false,
  }
i = 0;

json使用new内存
(在JS中,json是一个指针)

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多