jQuery .post не выполняет задачу в URL-адресе

Моя проблема связана с jQuery .post и Joomla. У меня есть шаблон с формой, которая находится в одной из областей аккордеона (с использованием аккордеона jQuery UI). У меня есть кнопка type=submit в форме. HTML-код формы генерируется с помощью jQuery, когда пользователь нажимает кнопку в области аккордеона.

Когда пользователь нажимает кнопку отправки формы, событие вызывает jQuery.post, который затем должен вызывать функцию сохранения в контроллере, который, в свою очередь, вызывает функцию сохранения в БД в модели.

URL-адрес для .post - index.php, и я сериализую() входные данные формы - со скрытыми элементами у меня есть задача, заданная для функции сохранения, которая находится в контроллере, а также определенный контроллер.

Проблема в том, что задача сохранения в контроллере не вызывается при нажатии кнопки, а также не работает функция сохранения в БД в модели. После того, как пользователь нажимает на кнопку, страница перенаправляется на 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');
} 

}


person netefficacy    schedule 18.10.2010    source источник
comment
Вы должны принять ответ на ваши вопросы.   -  person SLaks    schedule 19.10.2010
comment
Элементы формы template.php: ‹тип ввода=скрытое имя=значение контроллера=контроллер /› ‹тип ввода=скрытое имя=значение задачи=saveProgramUI /›'   -  person netefficacy    schedule 19.10.2010
comment
новичок... как мне принять ответ?   -  person netefficacy    schedule 19.10.2010
comment
Щелкните пустую галочку рядом с лучшим ответом на каждый вопрос.   -  person SLaks    schedule 19.10.2010
comment
Рядом с чьим-то ответом есть пустой флажок. Вы захотите нажать на нее. Вы получаете возможность «выбрать» лучший ответ из всех предложенных ответов. Это показывает уважение к человеку, который нашел время, чтобы дать вам отличный ответ, помогая другим людям, которые находят ваш вопрос, ища свои собственные проблемы. Добро пожаловать в сообщество :)   -  person Aardvark    schedule 19.10.2010
comment
@netefficacy Не не ставьте [РЕШЕНО] перед заголовком вашего вопроса. Выберите ответ, нажав на галочку под стрелкой вниз.   -  person Josh Stodola    schedule 21.10.2010


Ответы (2)


Добавьте return false; в конец обработчика submit.

Без этого браузер отправит форму в обычном режиме после запуска вашего обработчика, прежде чем он получит возможность отправить запрос.

person SLaks    schedule 18.10.2010
comment
Хорошо, это останавливает перенаправление на index.php, спасибо. Но .post по-прежнему не выполняет задачу сохранения. Буду пробовать некоторые вещи. - person netefficacy; 19.10.2010
comment
Еще немного информации: ответ .post содержит весь html для страницы. Кажется, что задача в контроллере не вызывается. - person netefficacy; 19.10.2010
comment
Я не знаю Joomla, поэтому я не могу вам помочь. Проверьте свой URL. - person SLaks; 19.10.2010

РЕШЕНО.

Это была проблема Joomla, а не jQuery.

Необходимо добавить эту строку в файл компонента для компонента:

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

Также добавлен вид view.raw.php и соответствующий шаблон макета.

Эта страница была поучительной: http://docs.joomla.org/How_Joomla_pieces_work_together

Я новичок в разработке Joomla, поэтому вернулся к основам, чтобы понять вещи, на этой странице был ответ.

Спасибо всем за идеи!

person netefficacy    schedule 21.10.2010