php – magento ajax无法正常工作

我的控制器中有这个功能:

public function saveLeadDaysAction(){
        echo "works";
    }

在模板phtml我试图这样做:

jq("#prodcal_leaddays").on("blur", function(e){
        $saveurl="<?=$this->getUrl('prodcal/adminhtml_prodcaltab/saveLeadDays');?>";
        console.log('$saveurl');
        jq.post($saveurl,{'id':'test'},function(d){
            console.log(d);
        });
    });

该网址似乎返回整个管理信息中心页面而不是预期的工作文本.但是,如果我直接在浏览器中打开网址,它会显示预期的文字.

我究竟做错了什么?

哦,我尝试追加?isAjax = true在url的末尾,返回:

{"error":true,"message":"Invalid Form Key. Please refresh the page."}

编辑:只是为了澄清: –
getUrl在控制台中生成一个类似http://localhost/devmagento/index.php/prodcal/adminhtml_prodcaltab/saveLeadDays / key / d3c92257c664d8d207f5a0bdeb3edebf /的URL.
如果我从控制台复制这个URL并将其粘贴到浏览器中,它会按预期工作,我会得到工作文本.
但是当与jQuery帖子一起使用时,它会失败并重定向到仪表板.

编辑2:似乎对于post数据,键是错误的,因为如果我改变上面使用GET,并将值放在getUrl函数中,它可以正常工作,但问题是因为这是由ajax完成的,我需要使用javascript动态更改值.

我为获得的工作所做的是:

jq("#prodcal_leaddays").on("blur", function(e){
        $saveurl="<?=$this->getUrl('prodcal/adminhtml_prodcaltab/saveLeadDays',array('id'=>'test'));?>";
        console.log($saveurl);
        jq.get($saveurl,function(d){
            console.log(d);
        });
    });

最佳答案 您可以使用POST ajax请求,但必须将?isAjax = 1添加到url,将form_key添加到params.例:

var values = {
    'form_key': "<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"
    // ...
};
$jq.post('<?php echo Mage::helper('adminhtml')->getUrl("..."); ?>?isAjax=1', values);
点赞