Hi Leute,
ich hab ein ähnliches Problem.
Was bisher geht: - ich verwende colorbox.js
- es lädt beim klicken auf einen Link ein Formular via ajax und rendert es in einer shiny lightbox
- beim submit wird das Formular erfolgreich validiert und es werden eventuelle Fehlermeldungen als Antwort zurück gesendet und in dem DHTML Colorbox-Objekt gerendert.
Das Problem:- beim erneuten submit, wird das Formular über den herkömmlichen weg übertragen und nicht via Ajax (ungewollter Page-refresh)
Ich vermute das Problem liegt irgendwo beim javascript, da ich nicht genau erkennen kann, warum es einmal funktioniert, aber kein zweites mal. Und der Request ja schließlich via der Colorbox vonstatten geht.
der javascript hierfür:
PHP-Code:
$(document).ready(function() {
$(".professor").colorbox({
innerWidth:630,
innerHeight:460,
scrolling: false,
overlayClose: false,
onComplete:function(){
$("#createProfessor").submit(function() {
$.ajax({
type: "POST",
dataType: "format=json",
url: "/admin/professor/create",
data: $("#createProfessor").serialize(),
success: function(data) {
$.fn.colorbox({
html: data,
innerWidth:630,
innerHeight:460,
title: 'Professor eintragen'
});
}
});
return false;
});
}
});
});
im html steht dann so etwas wie ein link:
PHP-Code:
<a class="professor" title="Professor eintragen" href="/admin/professor/create">Professoren</a>
hier der ActionController:
PHP-Code:
<?php
class Admin_ProfessorController extends Zend_Controller_Action
{
public function init() {
$ajaxContext = $this->_helper->getHelper('ContextSwitch');
$ajaxContext->setAutoJsonSerialization(true)
->addActionContext('create', 'json')
->initContext();
}
public function indexAction() {
$this->_forward('create');
}
private function getForm() {
$form = new Admin_Form_Professor();
$form->setAction(Zend_Controller_Front::getInstance()->getBaseUrl().'/admin/professor/create')
->setMethod('post')
->setAttrib('id', 'createProfessor');
return $form;
}
public function createAction() {
$this->_helper->layout->disableLayout ();
$form = $this->getForm();
$this->view->form = $form;
$request = $this->_request;
if($request->isPost()) {
if(!$form->isValid($request->getPost())) {
$form->populate($request->getPost());
}
// trage in db ein
}
}
}
Jeder Hinweis ist überaus willkommen.
Lesezeichen