Jon*_*Day 13 serialization magento prototypejs
一个间歇性且看似随意的错误正在影响至少三个不同站点的Magento结账.在Magento论坛上有很多关于这个主题的主题有一些不好的建议(吞下例外).这个问题导致销售损失,并导致网站所有者感到很沮丧.自2011年3月起,Magento已记录此问题(http://www.magentocommerce.com/bug-tracking/issue/?issue=11081).
付款方式,浏览器,Magento版本或我们尝试关联的其他因素没有模式.主要症状是在var/log/exception.log中记录的异常,其中指出了"必须收集引用总计",它将被引入Mage_Sales_Model_Quote::prepareRecurringPaymentProfiles()
.
我们在发生异常时记录了请求参数,并确定payment
参数为空.我们认为Magento在客户点击下订单时重新发送付款步骤中的表单元素(以便在AJAX请求之间不会在网站上保留信用卡详细信息),并且表单序列化失败并返回null/empty,opcheckout.js代码然后传递给PHP触发异常.
您能否说明哪种条件或数据会导致原型Form.serialize
方法以这种方式失败和/或如何进一步解决问题?
实际上,可能的原因很少.
Prototype的Form.serialize()
方法是使用同一个类中的另一个方法,称为Form.getElements()
.您也可以尝试以下代码,看看从payment.form对象传递了哪些元素.只是review.save()
在运行时覆盖方法以进行调试.
您可以将以下代码粘贴到您喜爱的浏览器(Chrome,Firefox或Safari)的控制台中:
review.save = review.save.wrap(function (originalMethod) {
console.log(payment.form); // Check what is in the form object
console.log(Form.getElements(payment.form)); // Check what items are returned for serializing
originalMethod(); // Calling original place order functionality to see if the issue occurs, so you can compare above debug info
});
Run Code Online (Sandbox Code Playgroud)
我认为它可以帮助您找出序列化过程中的问题.支付形式可能会以某种方式变空,或者表单中的所有项目都被禁用等等......
真诚的,伊万
归档时间: |
|
查看次数: |
2470 次 |
最近记录: |