【问题标题】:PHP/Joomla - Sending html output to a jQuery AJAX from a Joomla MVC controllerPHP/Joomla - 从 Joomla MVC 控制器向 jQuery AJAX 发送 html 输出
【发布时间】:2013-04-19 20:21:26
【问题描述】:

我正在尝试在 Joomla 组件中构建我的第一个 JSON 表单提交。

从 Joomla 控制器发送 HTML 响应是否有任何特殊编码或条件?

我正在使用 2.5 Joomla MVC。以下是一些测试/观察 -

1) 表单提交和响应已分别单独测试并按预期工作。我有一个单独的 PHP 文件,该文件提交到服务器端 PHP 文件,该文件接受 JSON 数据并发送 HTML 响应,客户端从响应中正确更新。

2) 我的 Joomla 组件中有一个工作表单提交。这是一个标准的客户端表单提交,提交到服务器端控制器,屏幕会从 controller.php 文件中的脚本相应地刷新。

3) 当我添加 jQuery/AJAX 表单提交 ($.post) 时,数据被添加到后端的数据库中,客户端 javascript 控制台显示 jQuery 脚本正在运行完成 -

我没有收到来自控制器的 echo 输出(来自 php 的简单 echo 脚本 -> echo 'this is a test';)

当我用硬编码字符串(而不是 AJAX 数据结果输出)替换输出的字符串时,客户端会按预期更新。当我用 [data] 替换硬编码字符串时,它不起作用。作为附加测试,我只是简单地回显一个简单的字符串以测试控制器,而简单的字符串没有返回值。

结论 - jQuery/AJAX 工作正常,但 PHP 控制器不工作。

【问题讨论】:

  • 在浪费了几个小时阅读其他人的问题/回复后才弄清楚。最终我通过使用 die([value]) 命令并发回原始 html 解决了这个问题。我的理解是,这是这样做的“黑客”方式。我尝试使用 view.raw.php 但遇到类未找到错误。希望任何能够提供有关如何正确使用 view.raw.php 的说明的人 -> 谢谢!
  • 看看使用 AJAX 的核心组件:Finder、Languages 和 Media,尤其是在 controllers/*.json.php 文件中,这些是用 &format=json 查询调用的

标签: php model-view-controller joomla


【解决方案1】:

将 &format=raw 添加到 url 就足够了,这将指示 Joomla!传递组件输出,而不是在其周围添加整个模板/页面/模块。

虽然 die() 并不好,但只需在控制器中调用 exit 即可实现相同的效果。有时,当您启用 SEF 并根据参数数量使用 router.php 解析器时,这可能是最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多