我正在一个客户网站上调试一些东西,这些东西有一个由别人开发的模块。它无法正常工作。
我对控制器有一个简单的 Ajax 调用:
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);
它返回带有状态文本的对象:“错误”。
我已经尝试了我能想到的 Ajax URL 的每一种排列方式,绝对的、相对的、带有 index.php 的、不带 index.php 的等等。每次,data.responseText 只是一个空字符串。
有什么想法吗?