Magento - Ajax请求 - 返回空响应

时间:2012-08-03 21:59:05

标签: jquery ajax magento

我正在调试客户端网站上的某些内容,这些内容包含由其他人开发的模块。它运作不正常。

我对控制器进行了简单的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);

它返回带有statusText的对象:“error”。

我已经尝试了我能想到的Ajax URL的每个排列,绝对的,相对的,使用index.php,没有index.php等。每次,data.responseText只是一个空字符串。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这终于得到了解决。该模块还有一个为Adminhtml设置的控制器,它使用相同的前缀,因此浏览到直接工作的控制器操作,但是当通过Ajax调用模板文件时,它不喜欢http到https开关。

为管理员指定了不同的名字,一切都很好。

答案 1 :(得分:0)

首先,尝试将URL更改为标准Magento URL并检查是否收到回复。至少你会知道问题是来自你的jQuery请求还是你的控制器本身。如果您可以直接在浏览器中访问控制器操作,那么您的模块就可以了。