2010-10-18 25 views
1

我的问题涉及到jQuery .post和Joomla。我有一个模板,在一个手风琴区域内(使用jQuery UI手风琴)。我有一个按钮类型=在表单中提交。当用户单击手风琴区域中的按钮时,通过jQuery生成html表单。jQuery .post不在URL中执行任务

当用户点击表单提交按钮时,事件调用jQuery.post,然后调用控制器中的保存函数,然后调用模型中的保存到db函数。

.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'); 
} 

}

+1

你应该接受你的问题的答案。 – SLaks 2010-10-18 23:48:22

+0

模板。PHP的表单元素:' – netefficacy 2010-10-18 23:52:11

+0

newbie ... how do我接受答案? – netefficacy 2010-10-18 23:55:14

回答

0

已解决。

这是一个Joomla问题,而不是jQuery。

需与此行添加到组件文件的分量:

$controller->execute(JRequest::getCmd('task')); 

另外添加的视图view.raw.php和对应的布局模板,以及。

这页的启发: http://docs.joomla.org/How_Joomla_pieces_work_together

我是新来的Joomla发展,所以又回到了基本了解的东西,该页面就有了答案。

感谢大家的想法!

1

添加return false;到您的submit处理程序结束。

如果没有这些,浏览器在运行处理程序之后通常会提交表单,然后才有机会发送请求。

+0

好的,这将停止重定向到index.php,谢谢。但是.post仍然没有完成保存任务。会尝试一些事情。 – netefficacy 2010-10-19 01:09:04

+0

还有一点信息:.post响应包含页面的所有html。似乎没有调用控制器中的任务。 – netefficacy 2010-10-19 01:54:48

+0

我不知道Joomla,所以我无法帮到你。检查您的网址。 – SLaks 2010-10-19 03:10:31