Hello,
Normal car tu met un die() dans l'action de ton controller, et donc le JS n'arrive pas à récupérer la réponse puisque sa stop l'application.
Je vais te donner plusieurs conseille pour améliorer ton code :
-
J'ai remarqué que dans chaque input, tu met " label => ''", plutôt que de répéter ça, met le directement dans la création de la form et sa va s'appliquer à tous tes inputs :
<?= $this->Form->create('Deal', array(
'url' => array('controller' => 'fronts', 'action' => 'test'))
'inputDefaults' => array(
'label'=>false,
//'div' => false //Ça, c'est si tu veux désactiver les div aussi.
)
); ?> -
Pour gérer les URLs des requêtes AJAX (qui peuvent être amenées à changer dans le temps), je te conseille de mettre un input hidden avec comme value, la route de la requête AJAX et tu la récupère en JS :
<?= $this->Form->input(null, array(
'type' => 'hidden',
'id' => 'route-ajax',
'data-url' => Router::url(array('controller' => 'fronts', 'action' => 'test'))
)); ?>
$.ajax({
type: 'POST',
url: $('#route-ajax').attr('data-url'),
data: POST,
...
});
Comme ça, si pour X raison tu décide de changer le nom de l'action par exemple où mettre un prefix etc, tu as juste à éditer soit ton fichier routes.php soit ta vue sans toucher au JS. Il y a d'autre méthode aussi, comme par exemple récupérer l'URL de la form via :
//#ControllerActionForm (De mémoire)
$('#FrontsTestForm').attr('action')
-
Plutôt que d'écrire <?php echo qui peut vite devenir chiant à la longue, écris <?=. (Comme dans mes exemples)
-
Et pour tester ta vue (pour être sûr que le JS fonctionne), renvoie juste un bout de code html :
public function test(){
//On verifie si c'est bien une requête AJAX, sinon on lui renvoie une erreur 404
if($this->request->is('ajax'))
{
$testMessage = "Hello world";
$this->set(compact('testMessage'));
} else {throw new NotFoundException(); }}
//Puis, dans ta vue app/View/Fronts/test.ctp :
<?php if(isset($testMessage)): ?>
<?= h($testMessage) ?>
<?php endif; ?>
Et normalement, le JS devrais récupérer ce message et te l'afficher.