我使用magento通过ajax添加到心愿单 它工作正常,但在服务器上安装SSL后,从管理员处制作安全的magento结账页面。 它没有给我任何来自ajax(302 Found)的回复。
但是,如果我在新标签中打开此网址,那么它的工作正常。 当我在请求URL中使用https时,它会给我以下html响应“重新加载页面以获取源:REQUEST URL”而没有https则没有响应显示。
这里是我用于的代码: -
function additemtowishlist(wId,pId)
{
var wishlisturl = 'wishlist/index/ajaxadd/product/'+pId;
var wishlistparam = '/?wishlist_id='+wId;
var url = '<?php echo Mage::getUrl("",array('_secure'=>false))?>'+wishlisturl+wishlistparam;
new Ajax.Request(url, {
dataType: "json",
onSuccess: function(response){
if (typeof(response.responseText) == 'string') eval('data = ' + response.responseText);
if (typeof data.product_id != 'undefined') {
var htmltoshow = '<div class="messages successmessage"><div class="success-msg"><span>'+data.message+'</div></div>';
jQuery("#wishlistresulthome-"+data.product_id).html(htmltoshow);
jQuery("#customwishlist-"+data.product_id).css('visibility','hidden');
}
else {
alert(Translator.translate('Error happened while creating wishlist. Please try again later'));
}
}
});
}
提前致谢。
答案 0 :(得分:1)
Hello Simranjeet你可以试试这个: -
function additemtowishlist(wId,pId)
{
var wishlisturl = 'wishlist/index/ajaxadd/product/'+pId;
var wishlistparam = '/?wishlist_id='+wId;
var url = '<?php echo Mage::getUrl("",array('_secure'=>false))?>wishlist/index/ajaxadd/product/';
new Ajax.Request(url, {
method: 'post',
parameters: {'wishlist_id':wId,'product_id':pId },
onSuccess: function(response){
if (typeof(response.responseText) == 'string') eval('data = ' + response.responseText);
if (typeof data.product_id != 'undefined') {
var htmltoshow = '<div class="messages successmessage"><div class="success-msg"><span>'+data.message+'</div></div>';
jQuery("#wishlistresulthome-"+data.product_id).html(htmltoshow);
jQuery("#customwishlist-"+data.product_id).css('visibility','hidden');
}
else {
alert(Translator.translate('Error happened while creating wishlist. Please try again later'));
}
}
});
}
答案 1 :(得分:1)
我发现ajaxToCart内置了ssl功能,但是如果主题开发人员很懒,他们可能忽略了包含告诉ajaxToCart启用ssl的代码。我在ajax_cart_super.js的以下代码中找到了它。
function ajaxToCart(url,data,mine) {
var using_ssl = $jq('.using_ssl').attr('value');
if(using_ssl==1) {
url = url.replace("http://", "https://");
}
..
..
}
正如您所看到的,ajaxToCart将使用https替换http,但仅当存在类using_ssl且value = 1的元素时。制作我的主题的开发人员没有包含该元素,所以当ajax请求指向一个应该是安全的不安全页面时,ajax响应不会在jquery中工作。
所以对我来说,快速修复只是将这个元素添加到我的页面上。我知道这个网站将始终启用ssl,所以我只需将其硬编码到我的模板中,如下所示。
<input type="hidden" class="using_ssl" value="1" />
一旦那样,javascript就会获得价值并进行替换。所以现在只需将其添加到模板中就可以了。如果您是主题开发人员,并且希望用户能够打开和关闭此功能,您可能需要检查管理员中的设置。虽然您可能位于不安全的页面上,但它会告诉您后端是否启用了ssl,这将需要添加此修复程序。
我还没有对以下内容进行测试,但我认为它看起来像这样......
if(Mage::app()->getStore()->isCurrentlySecure()){
echo '<input type="hidden" class="using_ssl" value="1" />';
}
顺便说一下,经过多年对stackoverflow解决方案的认可,我在这里发表了我的第一篇文章。感谢所有贡献者,帮助很大,我现在会尝试偿还。 :)
答案 2 :(得分:0)
尝试通过将_secure设置为true来更新您的javascript url变量。
答案 3 :(得分:0)
请尝试使用您的愿望清单url,而不是我的自定义操作
Mage::getUrl('',array('_secure'=>true))
我认为这会让你成为基本的安全网址。我相信。
Mage::getUrl('customer/account/login',array('_secure'=>true))
将进入登录页面。换句话说,
Mage::getUrl('module/controller/action',array('_secure'=>true))