2

我无法从 PHP 数组转换为 Javascript 数组,然后访问该值。我尝试过 JSON 编码和解码。

PHP:

$simpleArray= [];   
$childProducts = Mage::getModel('catalog/product_type_configurable')
    ->getUsedProducts(null,$_product);   
foreach($childProducts as $child) { //cycle through simple products to find applicable
    $simpleArray[$child->getVendor()][$child->getColor()] = $child->getPrice();
    var_dump ($simpleArray);
}

Javascript:

var simpleArray = <?=json_encode($simpleArray)?>;
//..lots of unrelated code
for(var i=0; i < IDs.length; i++)
{   
    console.log(simpleArray);
    //which color id is selected 
    var colorSelected = $j("#attribute92 option:selected").val();
    console.log('Value of color selected is ' + colorSelected);
    $j('.details'+data[i].vendor_id).append('<li class="priceBlock">$'+simpleArray[i][colorSelected]+'</li>');
}

编辑: 我已经摆脱了 php 中的 simpleArrayJson 声明并更改了 javascript 的第一行。

4

3 回答 3

3

您没有理由json_decode()尝试输出的值。直接回显即可:

var simpleArray = <?= $simpleArrayJson ?>;

这将输出一个 javascript 对象文字。

于 2013-05-23T18:16:05.237 回答
0

从 php.ini 中删除。

$simpleArrayJson=json_encode($simpleArray, JSON_FORCE_OBJECT);

在这里,您将 php 数组转换为 json 字符串。

javascript中的变化

var simpleArray = <?= json_encode($simpleArray, JSON_FORCE_OBJECT); ?>;

在这里,您只是在输出刺痛。以前你在哪里做这个

var simpleArray = <?=(array) json_decode($simpleArrayJson)?>

在 json_decode 返回一个数组之后,您将其转换为一个数组,然后由 the 转换为一个字符串,<?= 因此最终进入浏览器的内容类似于:

var simpleArray = Array; 
于 2013-05-23T18:15:09.173 回答
0

尝试 for in 循环。

for( item in data ) {
    console.log(data[item]);
}

这是因为 json 具有与 json_encoded 数组的索引匹配的键,而不是 0->n 索引。

编辑感谢评论更改data.itemdata[item]

于 2013-05-23T18:13:59.307 回答