您的位置:首页 > Web前端 > JavaScript

谁偷了我的&符

2013-12-02 00:00 120 查看
购物车sku选择js,切换验证,一直是我不愿意回忆的黑暗代码……

时隔几个月之后,今天突然又发现有个商品无法添加到购物车、经过仔细检查之后,发现,商品的sku为
array(
'color'=>'black & grey',
'size'=>'M'
);
但是购物车文件接收到的sku确是
array(
'color'=>'black & grey',
'size'=>'M'
);
因为做过sku匹配验证,如果不匹配的话,无法加入购物车。我就很奇怪了,明明我什么都没做,为什么会变呢?

后来经过测试,发现一个问题:测试代码如下:

<?php

$a = json_encode(array('color'=>'aa & bb'));
var_dump($a);
echo '<div id="test">'.$a.'</div>';
echo '<script>var test = document.getElementById("test").innerHTML</script>';

?>

结果发现,json_encode之后的字符串,放到div里面,浏览器会自动将其转化为html实体。

最终导致我ajax提交给购物车文件处理的时候,出现了sku不匹配的情况。。在购物车文件将html实体的sku再转化回来就可以了。

$sku = html_entity_decode($sku);

问题是解决了。

虽然我知道把数据放到div里面,再用js去获取,这样的方法不好。但是我真不知道有什么其他办法。。。

我最开始是在php文件里面,

<script>

var sku = '<?php echo json_encode($sku);'

sku = $.parseJSON(sku);

</script>

后来老大说,为了代码结构更清楚,要把php文件和js文件分开,不能这么写。我就只能把数据写到div里面,用jquery去拿了……

不知道还有什么更好的办法……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json_encode html实体