Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Magento-Ajax请求-返回空响应_Jquery_Ajax_Magento - Fatal编程技术网

Jquery Magento-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

我正在一个客户的网站上调试一些东西,该网站有一个由其他人开发的模块。它不能正常工作

我对控制器有一个简单的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);
    }
它调用控制器中的一个简单操作:

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触发的
请求吗?是的,控制器动作可以在浏览器中直接访问,没有问题。然而,我后来发现,相同的代码在已设置的开发人员站点上运行时没有问题,因此这似乎是某种服务器配置问题。