2010-10-18 29 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