基于Joomla 2.5.16 CMS和VirtueMart 2.0.24c建立互联网书店。我的整个站点(https://agenty-buduschego.ru)在nginx上运行并使用SSL,这是通过在.htaccess文件中启用重写模式来强制的。
问题是,没有使用Javascript代码的Virtuemart功能(例如添加到购物车,在用户配置文件中填写州/省的下拉列表,从Virtuemart后端向用户发送电子邮件)不起作用。 VirtueMart使用资产库中提供的jQuery 1.6.1来完成所有重要的事情。
这是一个跨浏览器的问题。
以下是我在Firefox中使用Firebug查看的示例查询和HTTP响应标头:
添加到购物车GET请求:
https://agenty-buduschego.ru/index.php?option=com_virtuemart&nosef=1&view=cart&task=addJS&format=json&quantity%3D1%26quantity%255B%255D%3D1%26view%3Dcart%26virtuemart_product_id%255B%255D%3D6%26option%3Dcom_virtuemart&_=1386495981382
请求标题:
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Cookie 4eb57c2cab77304872032c29b810ab83=ru-RU; 4eb57c2cab77304872032c29b810ab83=ru-RU; ce03aacdace0d694b35279c3e291619f=4F4313455311+8+75855145914305D50+7445B+55E30+A+4+411114E1642+5414716+94452415C446D555F+144+1+0+252+61019; 192fa9b374f512ee8093cd079b0847d4=eq6n1ih7m80efupendqjhemhb4
Host agenty-buduschego.ru
Referer https://agenty-buduschego.ru/index.php?option=com_virtuemart&view=user&layout=edit&lang=ru
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:25.0) Gecko/20100101 Firefox/25.0
X-Requested-With XMLHttpRequest
在视觉上,这会在浏览器中生成一个沙漏弹出,并且使用Firebug,我可以在jquery.min.js(第18行)中查看响应标题和“ 303 see other ”错误
回复标题:
Connection keep-alive
Content-Length 0
Content-Type text/html; charset=utf-8
Date Sun, 08 Dec 2013 09:46:07 GMT
Location http://agenty-buduschego.ru/index.php?option=com_virtuemart&nosef=1&view=cart&task=addJS&format=json&quantity[0]=1&virtuemart_product_id[0]=6&_=1386495981382&lang=ru
Server nginx
这似乎与网站上启用的SSL相关联,因为“303 see other”被告知是对浏览器到指定位置的重定向请求,我可以看到“Location”标题以http:/开头/
另一个非工作JS事件的例子是用户配置文件中的空状态/ provice下拉列表,而如果直接粘贴到浏览器的地址行中,则以下GET似乎成功完成:
https://agenty-buduschego.ru/index.php?option=com_virtuemart&view=state&format=json&virtuemart_country_id=176&lang=ru
Virtuemart论坛没有帮助,我只是被建议调查我的SSL设置,虽然这个问题似乎在Virtuemart用户中很普遍,并且每个发现的线程都没有提供解决方案。
我怀疑更换jQuery库或黑客入侵VM代码可能有所帮助,但是要感谢有任何方向深入研究这个问题。
有什么想法吗?
UPD:点击添加到购物车按钮,点击Checkout标签中的“添加到购物车”框中的显示模式弹出窗口Virtuemart会议。
这是一个部分解决方法,因为其他Ajax函数仍然无法正常工作。
感觉问题只需要最后一脚才能解决。
也许motools脚本会影响jQuery脚本?..
从用户档案页面的标题:
<script type="text/javascript" src="/components/com_virtuemart/assets/js/jquery.min.js">
<script type="text/javascript" src="/components/com_virtuemart/assets/js/jquery.noConflict.js">
<script type="text/javascript" src="/components/com_virtuemart/assets/js/vmsite.js">
<script type="text/javascript" src="/components/com_virtuemart/assets/js/chosen.jquery.min.js">
<script type="text/javascript" src="/media/system/js/mootools-core.js">
<script type="text/javascript" src="/media/system/js/core.js">
<script type="text/javascript" src="/media/system/js/mootools-more.js">
<script type="text/javascript" src="/media/system/js/tabs.js">
<script type="text/javascript" src="/media/system/js/validate.js">
<script type="text/javascript" src="/components/com_virtuemart/assets/js/vmtabs.js">