gpt4 book ai didi

ajax - 从 Magento Admin Extension 输出 ajax 数据的最佳方式

转载 作者:行者123 更新时间:2023-12-04 16:17:48 24 4
gpt4 key购买 nike

我正在编写一个 Magento Admin 扩展,其中包含一些 ajax 回调。到目前为止,我一直在通过 Controller 中的一个简单的 echo 语句通过 ajax 调用反馈我正在反馈的 json。它“有效”,但我在我的日志文件中收到一堆这样的错误:

2010-12-14T15:37:05+00:00 DEBUG (7): HEADERS ALREADY SENT:

[0] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Response/Http.php:44[1] /home/simplifiedsafety/www/store/lib/Zend/Controller/Response/Abstract.php:727[2] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Response/Http.php:75[3] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Varien/Front.php:188[4] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Model/App.php:304[5] /home/simplifiedsafety/www/store/app/Mage.php:599[6] /home/simplifiedsafety/www/store/index.php:104



我认为为避免这种情况,我需要通过某种障碍将其推出。有人可以给我一些指导吗?

最佳答案

Magento 使用 a response object将输出发送回浏览器。即使您调用 renderLayout从 Controller ,Magento 只是在输出之前在内存中建立字符串输出。您收到此错误的原因是 Controller 调度后有系统代码尝试设置 header ,但您意外的 Controller 输出阻止设置这些 header 。

最简单的解决方案是抛出一个

exit;

在你的 Controller 输出之后。这会停止执行,发送您的 ajax 响应,世界很开心。麾。

或者,如果您正在寻找那种总是难以捉摸的“正确”方式,基于核心中的示例,您似乎可以从 Controller 调用以下内容来检索响应对象,然后直接设置其主体。
$this->getResponse()->setBody('Some Response');

如果您执行上述操作,您将绕过 Magento 布局系统并直接设置输出,但仍负责将输出与响应对象一起发送。

您可能希望为 header (JSON、XML 等)设置自己的值,您可以使用以下内容(再次,来自 Controller 操作)
$this->getResponse()
->clearHeaders()
->setHeader('Content-Type', 'text/xml')
->setBody('Some Response');

祝你好运!

关于ajax - 从 Magento Admin Extension 输出 ajax 数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4441526/

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