【问题标题】:Passing PHP array to JAVASCRIPT (issue)将 PHP 数组传递给 JAVASCRIPT(问题)
【发布时间】:2017-08-30 09:07:11
【问题描述】:

似乎有一些奇怪的问题。 我正在尝试将一个 php 数组传递给我已经完成的 js。我可以像这样显示数组大小

document.getElementById("test").innerHTML = (jarr.length);

它工作得很好,但是,当我尝试在所述数组中显示一个值时,它显示object Object 奇怪的是,如果我尝试读取一个未存储的值,例如 jarr[234],它说未定义,因为没有存储值,所以我知道正在传输一些数据。

有什么帮助吗?

编辑:这是我将数组传递给 js 的方式

var jarr = <?php echo json_encode($testing); ?>;

编辑:我在复制之前忘记删除解析部分,我事先正在试验。

【问题讨论】:

  • 你为什么要 JSON.parse() 一个数字?至于 “当我尝试在所述数组中显示一个值时,它会说 object Object” 你需要显示该代码。但我猜你正试图通过一些只是为了让字符串传递/分配给它的东西来显示一个对象
  • 从编辑中,很明显你已经有一个对象,不需要解析它,但你也不能直接将它传递给innerHTML,除非它是一个原始的
  • 对不起,我忘记在复制和粘贴之前删除“解析”部分(之前有一些东西)。那么如何将字符串从数组慢速传递到 html 呢?是的,数组正在存储字符串。
  • 显示整个数组:document.getElementById("test").innerHTML = JSON.stringify(jarr); 显示单个字符串:document.getElementById("test").innerHTML = jarr[0];
  • 你能不能 var_dump ($testing );里面有什么

标签: javascript php html arrays


【解决方案1】:

你应该可以直接使用jarr而不用解析它,例如:

document.getElementById("test").innerHTML = jarr.length;
document.getElementById("first_element").innerHTML = jarr.length > 0 ? jarr[0] : "empty array";

如果您执行上述操作并且元素显示为object Object,这意味着在您的数组中,您存储的是对象而不是原始数据类型。所以也许可以尝试下面的方法来生成这些对象的一个​​很好的字符串表示(注意这是显示它们所必需的,但不是直接在你的 JavaScript 代码中使用它们):

document.getElementById("first_element").innerHTML = jarr.length > 0 ? JSON.stringify(jarr[0]) : "empty array";

【讨论】:

  • 并没有真正改变任何东西。抱歉,我忘了在复制和粘贴之前删除“解析”部分(之前有一些东西)。
  • 仍然像我在帖子中所说的那样说 [object Object]。
【解决方案2】:

克里斯所说的解决了这个问题!

"显示整个数组:document.getElementById("test").innerHTML = JSON.stringify(jarr); 显示单个字符串:document.getElementById("test").innerHTML = jarr[0]; – 克里斯 G 7 分钟前 " 无论出于何种原因,添加 (stringify) 都会为我修复它。 一个例子

document.getElementById("test").innerHTML = JSON.stringify(jarr[2].title);

【讨论】:

  • 出于什么原因?很简单:由于jarr[x] 显然是一个对象,将其设置为.innerHTML 调用它的.toString()(产生[object Object])。然而 JSON.stringify 需要一个 Object 并将其转换为 JSON,这正是我们打印 Object 的实际内容所需要的。但是:如果jarr[2].title 是一个字符串,那么您不需要 需要它。
  • 另外,您说“数组正在存储字符串”,但它实际上是存储对象(包含字符串)。这就是为什么 Flight Odyssey 的答案对您不起作用的原因。
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多