購物車sku選擇js,切換驗證,一直是我不肯意回憶的黑暗代碼…… php
時隔幾個月以後,今天忽然又發現有個商品沒法添加到購物車、通過仔細檢查以後,發現,商品的sku爲
array(
'color'=>'black & grey',
'size'=>'M'
);
可是購物車文件接收到的sku確是
array(
'color'=>'black & grey',
'size'=>'M'
);
由於作過sku匹配驗證,若是不匹配的話,沒法加入購物車。我就很奇怪了,明明我什麼都沒作,爲何會變呢? html
後來通過測試,發現一個問題:測試代碼以下: jquery
<?php ajax
$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
?> 瀏覽器
結果發現,json_encode以後的字符串,放到div裏面,瀏覽器會自動將其轉化爲html實體。 測試
最終致使我ajax提交給購物車文件處理的時候,出現了sku不匹配的狀況。。在購物車文件將html實體的sku再轉化回來就能夠了。 spa
$sku = html_entity_decode($sku); code
問題是解決了。 htm
雖然我知道把數據放到div裏面,再用js去獲取,這樣的方法很差。可是我真不知道有什麼其餘辦法。。。
我最開始是在php文件裏面,
<script>
var sku = '<?php echo json_encode($sku);'
sku = $.parseJSON(sku);
</script>
後來老大說,爲了代碼結構更清楚,要把php文件和js文件分開,不能這麼寫。我就只能把數據寫到div裏面,用jquery去拿了……
不知道還有什麼更好的辦法……