【问题标题】:Javascript array of string converts to array of objectsJavascript 字符串数组转换为对象数组
【发布时间】:2014-03-12 21:28:36
【问题描述】:

我从服务器发送字符串数组:

Node.JS + Express.JS

app.get('/url', function (req, res) {
    res.send(["item1", "item2", "item3"]);
})

但在前端我收到了对象数组:

Angular.JS

SomeResource.query(function (data) {
    console.log(data);
});

在控制台中

0: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "1"
$$hashKey: "008"
__proto__: Resource
1: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "2"
$$hashKey: "009"
__proto__: Resource
2: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "3"
$$hashKey: "00A"
__proto__: Resource

为什么会这样?如何在前端接收相同的数组? 谢谢

【问题讨论】:

  • 这可能是 Angular 的问题。如果你用浏览器点击你的 URL,你会得到一个 JSON 数组。对吗?
  • 右:字符串数组

标签: javascript node.js angularjs express


【解决方案1】:

不幸的是,MIME 不支持 JavaScript Array 类型的数据。

MIME 标准定义的内容类型也很重要 在电子邮件之外,例如在 HTTP 等通信协议中 全球资讯网。 HTTP 要求在上下文中传输数据 类似电子邮件的消息,尽管数据通常不是实际的 电子邮件。

使用 JSON。

您可以在浏览器调试器控制台(如 Firebug)或节点控制台上确认。

var json = JSON.stringify(["item1", "item2", "item3"]);
->undefined

JSON.parse(json);
->["item1", "item2", "item3"]

所以,在服务器端

app.get('/url', function (req, res) {
    res.send(JSON.stringify(["item1", "item2", "item3"]));
})

JSON.parse客户端的数据来获取数组。

【讨论】:

  • 不幸的是它没有用。我更新了服务器和客户端。现在我在控制台上有错误:SyntaxError: Unexpected token o。它指向JSON.parse 代码位置。在我在服务器端对它进行字符串化后,来自服务器的数组看起来也一样。
  • 可能你很清楚你可以从服务器向客户端发送“一些字符串”。我们在这里谈论的只是将“JSON.stringified Strings”从服务器发送到客户端。我们知道如何将 Array 转换为 JSON 字符串 = JSON.strigify 和 String 转换为 Array = JSON.parse。也许,您还需要developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,因为它包含双引号。
  • 谢谢。但是$resource service expects a response that can be deserialized as an array, receives an object, or vice versa. 所以现在 Angular 会抛出无法解析响应的错误
  • 我认为这是一个 Angular.JS 错误。在这里,我介绍了将 JSON 数组从服务器发送到客户端的全部因素,但由于我不使用 Angular.JS,所以无法帮助其余的。
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2018-09-25
  • 2017-08-24
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
相关资源
最近更新 更多