谁偷了我的&符
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去拿了……
不知道还有什么更好的办法……
时隔几个月之后,今天突然又发现有个商品无法添加到购物车、经过仔细检查之后,发现,商品的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更懂中文(JSON_UNESCAPED_UNICODE)
- php数组转换js数组操作及json_encode应用
- PHP的json_encode分析 推荐
- json_encode生成数字下标对象的方法
- PHP的json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
- json_encode之后----- 字符串中的中文unicode码转成中文
- js和php中中文编码\u的问题
- PHP多种序列化/反序列化的方法
- php - json_encode json_decode 用法实例
- 微信自定义菜单,php配置一个多维数组,通过json_encode()生成json字符串,中文会转为\uxxxx,微信报错!
- php的json_encode()中文编码问题
- PHP json_encode函数 数组中键值为数值索引时编码为对象格式而不是数组格式
- unset 数组 json_encode 数据格式
- Python如何替换'&#'开头的html实体,比如:阳
- 在PHP语言中使用JSON
- php数组使用json_encode函数中文被编码成null的原因和解决办法
- php简单实现查询数据库返回json数据
- JS中utf8和GBK的字符编码转换
- JSON(04)PHP的JSON处理函数及将MySQL结果集快速转为JSON的方法
- 使用json_encode将中文转成unicode