【问题标题】:How to send an array as param from smarty template in javascript function如何在javascript函数中从smarty模板发送数组作为参数
【发布时间】:2019-01-11 05:49:23
【问题描述】:

问题描述:

我在 .tpl 文件中有一个 Array($all_article_data) 包含 200 个项目。 现在我想在 javascript 函数中将此数组作为 Param 发送。

<span onclick="on('{$all_article_data}')">Example</span>

JAVASCRIPTFUNCTION

function on(data){
     alert(data);
}

我在文本“array”中接收到:(为了查看我使用的这个数组中是否有东西:

function on(data) {
   var i;
   for(i=0 ; i<=data.length; i++){
       alert(data[i]);
   }
}

这显示在不同的警报中 我需要在 javascript 中操作这个数组并使用 价值观。

感谢提示

最好的问候

【问题讨论】:

  • 您收到'array' 是因为您在函数中传递的是字符串而不是对象。只需将其称为&lt;span onclick="on({$all_article_data})"&gt;Example&lt;/span&gt;,不带引号。
  • 感谢 vikscool:我在警告窗口中有这条消息 "function Array() { [native code] }" 你知道现在的问题是什么吗?提前致谢

标签: javascript arrays function parameters smarty


【解决方案1】:

你应该在你的数组上使用 php 的 json_encode

$encoded= json_encode($all_article_data);

<span onclick="on('{$encoded}')">Example</span>

然后在你的javascript中,解析回来:

let jsonData = JSON.parse(data);

然后您可以按照自己的意愿使用jsonData

【讨论】:

  • 感谢 Stuart 的回答,我已经尝试过使用 json_encode 和 JSON.parse 只是这次我尝试过:let jsonData = JSON.parse(data) 而不是var jsonData = JSON.parse(data) 现在没有显示警报视窗。你知道json字符串是否可以显示在警报中吗?提前致谢
  • 确实可以提醒一个json字符串。根据您发出警报的位置,jsonData 可能不在范围内(正如它用 let 声明的那样)。现在尝试改用 var,看看您的数据是否收到警报。
  • 与 var a 有同样的问题,警告窗口不显示 :(
  • 能否发布您的php数组,或者json_encode(your_array)的内容
  • array(103) { [0] => array(10) { [0] => string(7) "SW10001" [1] => string(38) "Cashew Kerne gerostet und gesalzen BIO" [2] => string(0) "" [3] => NULL [4] => string(4) "7777" [5] => string(0) "" [6] => string(0 ) "" [7] => string(0) "" [8] => string(0) "" [9] => string(0) "" [10] => string(0) "" } [1 ] => array(10) {...我有 103 个项目
猜你喜欢
  • 2023-02-15
  • 2012-03-27
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多