我的控制器中有这个功能:
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);