2013-04-25 76 views
0

我想在Joomla组件内部构建我的第一个json表单提交。PHP/Joomla - 从Joomla MVC控制器发送html输出到jQuery AJAX

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

我正在使用2.5 Joomla MVC。这里有一些测试/观察 -

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

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

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

我没有收到我的控制器echo'd输出(简单的回声脚本从PHP - >回声'这是一个测试';)

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

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

+0

在几个浪费时间阅读其他人的问题/答案后发现它。最终我通过使用die([value])命令并发回原始html来解决此问题。我的理解是,这是做这件事的“黑客”方式。我尝试使用view.raw.php但得到一个类未找到错误。希望能够提供关于如何正确使用view.raw.php的指示的任何人 - >谢谢! – 2013-04-26 00:51:24

+0

查看使用AJAX的核心组件:Finder,Languages和Media,特别是在'controllers/*。json.php'文件中,这些文件通过'&format = json'查询调用 – 2013-04-26 08:43:13

回答

0

它应该足以将& format = raw添加到url,这将指示Joomla!通过组件输出,而不是添加整个模板/页面/模块。

然而,die()并不好,只需在控制器中调用exit就可以达到同样的效果。有时候,当你启用了SEF和基于参数数量的router.php解析器时,这可能是最好的选择。

相关问题