gpt4 book ai didi

javascript - Json 编码不起作用

转载 作者:行者123 更新时间:2023-11-28 05:30:58 25 4
gpt4 key购买 nike

我想将 php 数组编码为 JSON,这样我就可以将它作为属性传递到图像 onclick() 中,这就是我需要 htmlspecialcharts 的原因;

然后在 js 函数中,我尝试使用 JSON.parse 将其转换为 js 对象,以便我可以使用数组的数据。

但是我无法解析它,因为我从编码中获得的语​​法不正确

初始的 php 数组是:

array (size=3)
0 => string 'Bleu' (length=4)
1 => int 1
2 => string 'XL' (length=2)

我正在使用 htmlspecialchars(json_encode()) 并我需要得到的结果是:

 jsonTab = '["Bleu",1,"XL"]';

但是编码后我得到:

Bleu,1,XL

我不明白为什么编码不能正常工作......

代码 php,我在其中通过列出产品每种颜色的大小来创建 php 数组:

$couleurs = $pdo ->getCouleurProduit($id);
$nbCouleur = count($couleurs);
$t = 1;
foreach ($couleurs as $uneCouleur)
{

$taille = $pdo ->getTaille($id,$uneCouleur[0]); // renvoie les taille de la couleur
$nbTaille = count($taille); // renvoie le bombrede taille n0 = 1


${'couleur'.$t} = array($uneCouleur[0]); // definie une tableaux nomé "couleurx" avec pour premier element le libelle de la couleur
array_push(${'couleur'.$t}, $nbTaille); // ajoute en second element au tableaux "couleurx" le nombre de taille pour la couleur

for ($i = 0; $i < $nbTaille; $i++ ) // tant que i est inferieur au nombre de taille
{
array_push(${'couleur'.$t}, $taille[$i][0]); // on ajoute au tableaux "couleurx" le libelle (a [0]) de chaque taille [i] du tableaux $taille

}
${'cl'.$t} = htmlspecialchars(json_encode(${'couleur'.$t})); //on creer une variable clx qui prend la valeur encoder en json du tableau "couleurx" actuel
$t++;

}$couleurs = $pdo ->getCouleurProduit($id);
$nbCouleur = count($couleurs);
$t = 1;
foreach ($couleurs as $uneCouleur)
{

$taille = $pdo ->getTaille($id,$uneCouleur[0]); // renvoie les taille de la couleur
$nbTaille = count($taille); // renvoie le bombrede taille n0 = 1


${'couleur'.$t} = array($uneCouleur[0]); // definie une tableaux nomé "couleurx" avec pour premier element le libelle de la couleur
array_push(${'couleur'.$t}, $nbTaille); // ajoute en second element au tableaux "couleurx" le nombre de taille pour la couleur

for ($i = 0; $i < $nbTaille; $i++ ) // tant que i est inferieur au nombre de taille
{
array_push(${'couleur'.$t}, $taille[$i][0]); // on ajoute au tableaux "couleurx" le libelle (a [0]) de chaque taille [i] du tableaux $taille

}
${'cl'.$t} = htmlspecialchars(json_encode(${'couleur'.$t})); //on creer une variable clx qui prend la valeur encoder en json du tableau "couleurx" actuel
$t++;

}

img 属性的 php 数组

$r=1;

foreach ($couleurs as $uneCouleur)
{?>
<img id = "test" src= "./images/<?=${'couleur'.$r}[0]?>.jpg " alt = "lol" onclick="loadTaille(<?php echo ${'cl'.$r} ?>);"/><?php
$r++; //pour chaque couleur du produit on utilise les tableaux couleurx et clx
}?>

还有js文件produit.js

 function loadTaille(img){

// var txt = "'[" + img + "]'";
// var txt = '["Bleu",1,"XL"]';

var tailles = JSON.parse(img);
alert (img)

}

最佳答案

您尚未发布任何代码,因此很难说您到底哪里出了问题,但是,这里有一个适用于您发布的值的简单示例:

$arr = ['Bleu', 1, 'XL'];
echo json_encode($arr);

输出

["Bleu",1,"XL"]

顺便说一句,我真的不认为你想在动态生成 JavaScript 代码时使用 htmlspecialchars() 。适当的上下文不是 html(除非您将 javascript 内联到 html 属性中,我认为这里不是这种情况)。

更新:

既然我看到了您发布的代码,我相信您可以通过在 javascript 上下文中单引号呈现的 json 字符串来解决语法错误。

更改:

onclick="loadTaille(<?php echo ${'cl'.$r} ?>);"

至:

onclick="loadTaille('<?php echo ${'cl'.$r} ?>');"

关于javascript - Json 编码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39707859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com