【发布时间】:2014-02-05 15:47:18
【问题描述】:
我的控制器里面有这个功能:
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);
});
});
该 url 似乎返回了整个管理仪表板页面,而不是预期的 works 文本。但是,如果我直接在浏览器中打开 url,它会显示预期的文本。
我做错了什么?
哦,我已经尝试在 URL 末尾附加 ?isAjax=true,它返回:
{"error":true,"message":"Invalid Form Key. Please refresh the page."}
编辑: 澄清一下:-
getUrl 在控制台中生成一个类似 http://localhost/devmagento/index.php/prodcal/adminhtml_prodcaltab/saveLeadDays/key/d3c92257c664d8d207f5a0bdeb3edebf/ 的 URL。
如果我从控制台复制此 url 并将其粘贴到浏览器中,它会按预期工作,我会得到 works 文本。
但是当与 jQuery post 一起使用时,它会失败并重定向到仪表板。
编辑 2: 似乎与发布数据,键是错误的,因为如果我将上面的内容更改为使用GET,并将值放在getUrl 函数中,它可以正常工作,但问题是由于这是由 ajax 完成的,我需要使用 javascript 动态更改值。
我为 get 工作所做的事情是:
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);
});
});
【问题讨论】: