将PHP构造函数数组从PHP发送到Javascript

时间:2017-07-23 18:28:16

标签: javascript php arrays ajax

我正在尝试从PHP发送一个数组回Javascript。我正在使用Ajax来做到这一点。我知道如何将数组发送到Javascript,但这次我正在尝试发送一个包含一些Javascript构造函数的数组。例如,我希望能够发送此信息:$ jruby -S rails s puma TypeError: no implicit conversion of Regexp into String join at org/jruby/RubyArray.java:1760 <top> at /Users/z/bin/spring:11 load at org/jruby/RubyKernel.java:955 <top> at /Users/z/bin/rails:3 有没有办法将此数组发送到Javascript?如果是这样,Javascript如何能够以在数组的第一个索引中创建新Date的方式使用此数组?

2 个答案:

答案 0 :(得分:1)

难道你不能只发送new Date()而不是构造函数的值吗?我会假设更有效。

答案 1 :(得分:1)

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

答案很长:当你说你从PHP发送数组到Javascript时,你需要明白PHP是一种服务器端语言,而Javascript就是在浏览器中运行的。 因此,在它们之间,你有网络层,在该层上传输的所有东西都应该是可序列化的,通常意味着字符串。

因此,您通过Ajax传递给浏览器的数据通常是JSON。 它只能包含原始值,如:string,number,boolean,null。

new Date(2017,06,03)是一个javascript对象,不属于JSON规范。 您可以使用某些PHP函数(如date)序列化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.