我正在尝试从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的方式使用此数组?
答案 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.