谁偷了我的符
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
購物車sku選擇js,切換驗(yàn)證,一直是我不愿意回憶的黑暗代碼……
時隔幾個月之后,今天突然又發(fā)現(xiàn)有個商品無法添加到購物車、經(jīng)過仔細(xì)檢查之后,發(fā)現(xiàn),商品的sku為
array(
? ? 'color'=>'black & grey',
? ? 'size'=>'M'
);
但是購物車文件接收到的sku確是
array(
? ? 'color'=>'black & grey',
? ? 'size'=>'M'
);
因?yàn)樽鲞^sku匹配驗(yàn)證,如果不匹配的話,無法加入購物車。我就很奇怪了,明明我什么都沒做,為什么會變呢?
后來經(jīng)過測試,發(fā)現(xiàn)一個問題:測試代碼如下:
<?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>';
?>
結(jié)果發(fā)現(xiàn),json_encode之后的字符串,放到div里面,瀏覽器會自動將其轉(zhuǎn)化為html實(shí)體。
最終導(dǎo)致我ajax提交給購物車文件處理的時候,出現(xiàn)了sku不匹配的情況。。在購物車文件將html實(shí)體的sku再轉(zhuǎn)化回來就可以了。
$sku = html_entity_decode($sku);
問題是解決了。
雖然我知道把數(shù)據(jù)放到div里面,再用js去獲取,這樣的方法不好。但是我真不知道有什么其他辦法。。。
我最開始是在php文件里面,
<script>
var sku = '<?php echo json_encode($sku);'
sku = $.parseJSON(sku);
</script>
后來老大說,為了代碼結(jié)構(gòu)更清楚,要把php文件和js文件分開,不能這么寫。我就只能把數(shù)據(jù)寫到div里面,用jquery去拿了……
不知道還有什么更好的辦法……
轉(zhuǎn)載于:https://my.oschina.net/u/948242/blog/180809
總結(jié)
- 上一篇: Windows下DNS ID欺骗的原理与
- 下一篇: 分布式搜索elasticsearch