gpt4 book ai didi

php - magento ajax 不工作

转载 作者:可可西里 更新时间:2023-10-31 23:31:17 25 4
gpt4 key购买 nike

我的 Controller 里面有这个函数:

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: 似乎对于发布数据, key 是错误的,因为如果我将上面的更改为使用 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);
});
});

最佳答案

您可以使用 POST ajax 请求,但您必须将 ?isAjax=1 添加到 url 并将 form_key 添加到参数。示例:

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

关于php - magento ajax 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com