【问题标题】:send array of Javascript constructors from PHP to Javascript将 Javascript 构造函数数组从 PHP 发送到 Javascript
【发布时间】:2017-07-23 18:28:15
【问题描述】:

我正在尝试将数组从 PHP 发送回 Javascript。我正在使用 Ajax 来执行此操作。我知道如何将数组发送到 Javascript,但这次我试图发送一个包含一些 Javascript 构造函数的数组。例如,我希望能够发送这个:[new Date(2017,06,03), 25, 33] 有没有办法将此数组发送到 Javascript?如果是这样,Javascript 将如何以在数组的第一个索引中创建新日期的方式使用此数组?

【问题讨论】:

  • 嗯,有一个 eval 函数可以接受一个字符串并将其作为代码执行:developer.mozilla.org/en/docs/Web/JavaScript/Reference/… 但是有很多反对使用它的论据。如果您需要使用它(或者您认为需要),它通常可以指出您的设计可以改进(当然并非总是如此)。为什么不直接以您喜欢的格式发送日期,并在获取数据后在 JS 中创建实际对象?
  • @Giedrius 我需要转换数组中的日期,因为我使用的是 Google Charts。所以本质上,我发回了一组已经定义的值,以便谷歌图表可以接受它。
  • 您需要将日期转换为什么?能举个具体的例子吗?
  • 是的,一个例子会很有用。如果您需要将实际的 Date 对象从 PHP 发送到 JS,我认为这是不可能的,因为它不是两种语言都可以独立理解的主要数据类型。也许您应该阅读您正在使用的 API 文档,因为它们可能会接受某些值,这些值将自动转换为您需要的对象。或者从你的 PHP 脚本获取原始数据到你的 JS 脚本,转换为对象,然后发送到 API(如果它通过 AJAX 请求发送,它仍然会被字符串化)。
  • 如果它只是日期相关的,你在这里有一些线索stackoverflow.com/questions/4511705/…

标签: javascript php arrays ajax


【解决方案1】:

你不能简单地发送new Date() 的值而不是构造函数吗?我认为会更有效。

【讨论】:

  • 我需要转换数组中的日期,因为我使用的是 Google Charts。所以本质上,我发回了一组已经定义的值,以便谷歌图表可以接受它。
【解决方案2】:

简短回答:不,没有直接的方法。

长答案:当您说从 PHP 向 Javascript 发送数组时,您需要了解 PHP 是一种服务器端语言,而 Javascript 是在浏览器中运行的。 所以,在它们之间,你有网络层,在该层传输的所有东西都应该是可序列化的,通常是字符串。

因此,您通过 Ajax 传递给浏览器的数据通常是 JSON。 它只能包含原始值,例如:字符串、数字、布尔值、空值。

new Date(2017,06,03) 是一个 javascript 对象,它不是 JSON 规范的一部分。 您可以使用一些 PHP 函数(如 date)序列化日期,通过 Ajax 发送,然后在 Javascript 世界中反序列化。

类似的东西:

<?php
    /* your Ajax return */
    echo json_encode(array(date('c', mktime(0, 0, 0, 7, 1, 2000)), 25, 33)); // will return ["2000-07-01T00:00:00-07:00",25,33]
?>

然后在 JavaScript 部分,您可以使用 Date 构造函数解析它。

// Javascript
const response = ...
const myData = new Data(response[0]); // Will be Date obj.

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多