jQuery .post没有在URL中执行任务

时间:2010-10-18 23:47:24

标签: jquery ajax forms joomla submit

我的问题涉及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');
} 

}

2 个答案:

答案 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开发的新手,所以回到基础知识来理解事情,那个页面有答案。

感谢所有人的想法!