Jquery Magento-Ajax请求-返回空响应
我正在一个客户的网站上调试一些东西,该网站有一个由其他人开发的模块。它不能正常工作 我对控制器有一个简单的Ajax调用:Jquery Magento-Ajax请求-返回空响应,jquery,ajax,magento,Jquery,Ajax,Magento,我正在一个客户的网站上调试一些东西,该网站有一个由其他人开发的模块。它不能正常工作 我对控制器有一个简单的Ajax调用: jQuery.ajax({ url : "http://www.site.com/quickview/index/cart", complete : function(data){ // data.responseText is empty here. jQuery('span.t
jQuery.ajax({
url : "http://www.site.com/quickview/index/cart",
complete : function(data){
// data.responseText is empty here.
jQuery('span.topLinks').replaceWith(data.responseText);
// This returns the data object with statusText = "error"
console.log(data);
}
})
public function cartAction()
{
// This log call never fires
Mage::log('foobar',null,'temp.log');
$this->loadLayout();
$Top = $this->getLayout()->getBlock('top.links')->toHtml();
$this->getResponse()->setBody($Top);
}
它调用控制器中的一个简单操作:
jQuery.ajax({
url : "http://www.site.com/quickview/index/cart",
complete : function(data){
// data.responseText is empty here.
jQuery('span.topLinks').replaceWith(data.responseText);
// This returns the data object with statusText = "error"
console.log(data);
}
})
public function cartAction()
{
// This log call never fires
Mage::log('foobar',null,'temp.log');
$this->loadLayout();
$Top = $this->getLayout()->getBlock('top.links')->toHtml();
$this->getResponse()->setBody($Top);
}
问题是Ajax调用从未到达控制器。我在cartAction()中放置了一个Mage::log调用,但它从未被触发
控制器确实设置正确,因为我可以直接浏览到cartAction(),它将呈现我试图返回到Ajax调用的块(如果我回显它,这里就不会回显)
如果我在Ajax调用中放置:
console.log(data);
它返回状态为“error”的对象
我尝试了我能想到的Ajax URL的每一种排列,绝对、相对、带index.php、不带index.php等等。每次,data.responseText都只是一个空字符串
有什么想法吗?首先,尝试将URL更改为标准的Magento URL,并检查是否收到响应。至少您会知道问题是来自jQuery请求还是控制器本身。如果您可以在浏览器中直接访问控制器操作,您的模块就可以了。这最终得到了解决。该模块还为Adminhtml设置了一个控制器,该控制器使用相同的frontname,因此可以直接浏览控制器操作,但是当通过Ajax通过模板文件调用时,它不喜欢http到https的切换
为管理员控制器分配了不同的frontname,一切正常。我相信您模块的frontname是
quickview
,controller是IndexController
,方法名是cartAction
。如果一切正常,并且jquery启动ajax,那么应该调用它。您将Mage::log
放在哪里?我相信是在开始cartAction()的大括号之后。是的,Mage::在cartAction()方法中的任何地方记录。不是在任何地方,是在函数启动之后。你能发布通过ajax触发的请求吗?是的,控制器动作可以在浏览器中直接访问,没有问题。然而,我后来发现,相同的代码在已设置的开发人员站点上运行时没有问题,因此这似乎是某种服务器配置问题。