当前位置: 首页 > 面试题库 >

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

阙奇思
2023-03-14
问题内容

我正在编写一个Magento
Admin扩展,其中包含一些Ajax回调。到目前为止,我一直在通过控制器中的简单echo语句回显通过ajax调用反馈的json。它“有效”,但是我的日志文件中出现了很多这样的错误:

2010-12-14T15:37:05 + 00:00调试(7):标头已发送:

     [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使用响应对象将输出发送回浏览器。即使您renderLayout从控制器调用,Magento也会在输出之前在内存中建立字符串输出。出现此错误的原因是,在控制器分派之后,系统代码会尝试设置标头,但是意外的控制器输出会阻止设置这些标头。

最简单的解决方案是

exit;

直接在您的控制器输出之后。这会停止执行,您的ajax响应已发送,世界很开心。麾。

或者,如果您正在寻找一种始终难以捉摸的“正确”方法,那么根据核心示例,您似乎可以从控制器中调用以下命令来检索响应对象,然后直接设置其主体。

$this->getResponse()->setBody('Some Response');

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

您可能想为标头(JSON,XML等)设置自己的值,您可以使用以下内容(同样,通过控制器操作)进行操作

$this->getResponse()
->clearHeaders()
->setHeader('Content-Type', 'text/xml')
->setBody('Some Response');

祝好运!



 类似资料:
  • 问题内容: 我在互联网上寻找将数据从Java桌面应用程序导出到Excel的答案,并且遇到了Apache POI API 。然后我发现JDBC可以工作,然后偶然发现了JExcel。它们都是一样好,还是我应该专注于其中最好的,这是什么? 干杯。 问题答案: 我可能来不及回答这个问题,但是我想您的正确选择是Jxls。我在模块中遇到了类似的情况,必须保留徽标,颜色,col- span,固定列等特定模板…因

  • 问题内容: 我上了一堂课,想跟踪学生的统计数据。我打算稍后制作一个GUI来处理这些数据。 我的主要问题是:保存和以后检索此数据的最佳方法是什么? 我已经读过关于pickle和JSON的文章,但是我并没有真正了解它们的工作方式(尤其是关于它们如何保存数据的信息,例如哪种格式和位置)。 问题答案: 对于持久性数据(存储有关学生的信息),数据库是一个不错的选择。如前所述,Python附带了Sqlite3

  • 问题内容: 我有一个包含3列的表格- id(pk),pageId(fk),名称。我有一个PHP脚本,它将大约5000条记录转储到表中,其中大约一半是重复的,具有相同的pageId和名称。pageId和名称的组合应该是唯一的。当我遍历php中的脚本时,防止重复项被保存到表中的最佳方法是什么? 问题答案: 第一步是在表上设置唯一键: 然后,当有重复项时,您必须决定要做什么。你应该: 忽略它? 覆盖先前

  • 问题内容: 我想知道哪种方法是将数据从dynamoDB发送到elasticsearch的最佳方法。 AWS开发工具包js。https://github.com/Stockflare/lambda-dynamo-to-elasticsearch/blob/master/index.js DynamoDB Logstash插件:https : //github.com/awslabs/logstash

  • 问题内容: 我试图通过C#中的代码找到最佳的(快速与最简单)访问SQL Server代码的方法。 当我从书本上学习时,我遇到了很多建议,通常都建议我通过拖放来完成。但是,由于我想在代码中做到这一点,所以第一种方法是按列号获取数据,但是SQL Query中的任何重新排序(如添加/删除列)都让我难以解决。 例如(别笑,有些代码大约有2年历史了),我什至编写了特殊的函数来传递sqlQueryResult

  • 问题内容: 有哪些更好的AJAX Treeview支持异步JSON加载。 YUI TreeView看起来不错,但由于表等而肿。 问题答案: jQuery TreeView插件 非常好,并且具有非常好的异步 JSON加载功能… ExtJS TreeView Component ,也是出色的多级异步加载,非常适合大型树。