我的问题涉及jQuery .post和Joomla。我有一个模板,其表格位于其中一个手风琴区域内(使用jQuery UI手风琴)。我在表单中有一个按钮类型=提交。当用户单击手风琴区域中的按钮时,通过jQuery生成表单html。
当用户单击表单提交按钮时,事件将调用jQuery.post,然后该控件将调用控制器中的保存功能,该功能又调用模型中的保存到数据库功能。
.post的URL是index.php,我序列化()表单输入 - 使用隐藏元素,我将任务设置为控制器内的保存功能,同时定义控制器。
问题是单击按钮时未调用控制器中的保存任务,模型中也没有保存到db功能。用户单击按钮后,页面将重定向到index.php(主页)。没有保存到数据库。
非常感谢任何帮助。
template.php表单元素:
<input type="hidden" name="controller" value="controller" />
<input type="hidden" name="task" value="saveProgramUI" />'
.js代码:
jQuery('#new_program_form').submit( function () {
if (jQuery('#new_program_form').valid()) {
jQuery.post("index.php", jQuery("#new_program_form").serialize(), function(html){
alert("Data Loaded: " + html);
});
}
});
控制器代码:
function saveProgramUI(){
$program = JRequest::get( 'POST' );
$model = & $this->getModel('pfm');
$model->saveProgramUI($program);
$resp = "Hello World!";
return $resp;
}
型号代码:
function saveProgramUI($program)
{
$programTableRow =& $this->getTable('programs');
// Bind the form fields to the programs table, save to db
if (!$programTableRow->save($program)) {
JError::raiseError(500, 'Error saving program');
}
}
答案 0 :(得分:1)
将return false;
添加到submit
处理程序的末尾。
如果没有它,浏览器将在运行处理程序之后正常提交表单,然后才有机会发送请求。
答案 1 :(得分:0)
解决。
这是一个Joomla问题,而不是jQuery。
需要将此行添加到组件的组件文件中:
$controller->execute(JRequest::getCmd('task'));
还添加了视图view.raw.php和相应的布局模板。
这个页面很有启发性: http://docs.joomla.org/How_Joomla_pieces_work_together
我是Joomla开发的新手,所以回到基础知识来理解事情,那个页面有答案。
感谢所有人的想法!