如何将PHP数组作为参数传递给JavaScript函数

时间:2019-07-15 12:31:56

标签: javascript php arrays json

这只是一个示例,但是使用此代码,它可以工作。但是,如果我将5更改为“ 5” ,将10更改为“ 10” ,则回声行会出现 Unexpectid结尾语法错误

>

PHP

$array = array();
$array[0] = 10;  
$array[1] = 5; 
$json = json_encode($array);

echo "<td style=\"background: red;\"><button onclick=\"modifyModalContent('$day_date_column','$i',$json) ... (really long line)

JS

function modifyModalContent(date, id, array) {
  var header = document.querySelector(".modal-header");
  var body = document.querySelector(".modal-body");

  var table =
  `
  <table class="table table-bordered table-hover">
    <tr>    
      <td>${array[0]}<td>
      <td>${array[1]}<td>
    </tr>
  </table>
  `;

  body.innerHTML = table;

  header.innerHTML = `<h1> Date: ${date}</h1></br><h1>ID: ${autoid}</h1>`;
}

运行后的两条回声线:

可行:

<tr style="height: 137px;"><td style="background: red;"><button onclick="modifyModalContent('2019-01-21','1',[10,5])" ... (long line) 

如果我将它与字符串数组一起使用,则会出现以下错误:

<tr style="height: 137px;"><td style="background: red;"><button onclick="modifyModalContent(2019-01-21,1,["10","5"])" ... (long line) 

我如何用这样的数组做同样的事情:

$array = array();
$array[0] = "10";  
$array[1] = "5"; 

我猜问题出在“ char”,但是我该如何解决?

2 个答案:

答案 0 :(得分:3)

我建议使用PHP函数htmlspecialchars -不仅要解决引号问题,还应解决在使用之前应转换为HTML实体的任何其他字符(&,<,>}作为HTML属性值。

$json = htmlspecialchars(json_encode($array));

答案 1 :(得分:1)

["10","5"]替换为['10','5']

有关单引号和双引号的更多信息:When to use double or single quotes in JavaScript?