Bonjour à tous !

Voila je voudrais simplement rajouter un bout de code ajax pour poster un commentaire :)

A noter que le formulaire fonctionne parfaitement dans un envois "normal".

Seul problème, lorsque j'effectue mon envois ajax sur mon controlleur Cake, j'ai une error 500 dans la console de chrome.

D'avance MERCIIIIII

POST http://127.0.0.1/v0/member/Messages/edit 500 (Internal Server Error)
f.support.ajax.f.ajaxTransport.sendjquery.min.js:4
f.extend.ajaxjquery.min.js:4
f.each.f.(anonymous function)jquery.min.js:4
(anonymous function)home:254
f.event.handlejquery.min.js:3
f.event.add.i.handle.kjquery.min.js:2

Par contre quand je l'envois sur un fichier test_ajax.php situé à la racine du site web, pas de soucis !

Mon controller Message :

<?php
App::uses('AppController', 'Controller');
/**
 * Messages Controller
 *
 * @property Message $Message
 */
class MessagesController extends AppController {

    function member_edit( $message_id = null)
    {
        debug($this->request->data);

        /*if($this->request->is('put') || $this->request->is('post'))
        {*/
            //print_r($_POST);
            //debug($this->request->data);
            /*$d = $this->request->data;
            $d'Message']'user_id'] = $_SESSION'Auth']'User']'id'];
            if($this->Message->save($d,true,array('message','query_id','user_id')))
            {
                $this->Session->setFlash(__("Your message has been correctly sent"),"notif");
            }*/

        //}
        //$this->redirect(array('controller' => 'Pages','action' => 'home','member' => true));
    }

}

Mon formulaire :

<div id="message_form">
                <?php echo $this->Form->create('Message', array( 'url'=> array('controller' => 'Messages', 'action' => 'member_edit')));?>
                <?php echo $this->Form->hidden('Message.query_id', array('value' => $query'Query']'id'] )); ?>
                <?php echo $this->Form->textArea('Message.message', array('label'=> "")); ?>
                <?php echo $this->Form->end(__('Send'));?>
            </div>

Mon bout de code Ajax dans ma view :

<?php $this->Html->scriptStart(array('inline' => false));?>
    $(function(){
        $("#MessageMemberHomeForm").submit(function(){
            query_id = $(this).find("input[id=MessageQueryId]").val();
            message = $(this).find("textarea[id=MessageMessage]").val();
            $.post('/v0/member/Messages/edit', {"data[Message][query_id]" : query_id, "data[Message][message]": message},function(data) {
                    alert(data);
            });
            return false;
        });
    }
    );
<?php $this->Html->scriptEnd();?>

2 réponses


amethyste
Réponse acceptée

Certainement une erreur d'url. Tu devrais essayer en utilisant le JS Helper

<div id="message_form">
                <?php echo $this->Form->create('Message', array( 'url'=> array('controller' => 'Messages', 'action' => 'member_edit')));?>
                <?php echo $this->Form->hidden('Message.query_id', array('value' => $query'Query']'id'] )); ?>
                <?php echo $this->Form->textArea('Message.message', array('label'=> "")); ?>
                <?php echo $this->Js->submit(__('Send'));?>
 </div>
zaarkan
Auteur
Réponse acceptée

Salut !

Pour finir j'ai régler le problème avec le JS helpers.

Par contre je ne sais tjrs pas pourquoi cela ne fonctionnais pas.

Enfin c'est fixer !

@+