using ajax to post comments in cakephp results in 404 error, but no errors locally?

Posted by Paul on Stack Overflow See other posts from Stack Overflow or by Paul
Published on 2010-04-05T19:14:16Z Indexed on 2010/04/05 19:53 UTC
Read the original article Hit count: 274

Filed under:
|
|
|

Using an ajax helper created for use with Jquery I've created a form that posts comments to "/comments/add", and this works as expected on my local wamp server but not on my production server. On my production server I get a '404 error, cannot find /comments/add'.

I've spent quite a bit of time searching for a resolution with no luck so far. I've focused on trying to identify a gap but nothing jumps out at me.

Here are some observations:

  • works as expected on local wamp server
  • requestHandler is listed as component
  • files on both local and production server are the same
  • controllers folder has write access
  • autoLayout and autoRender are both set to false

Here is the form in my view:

     <div class="comments form">
     <?php echo $ajax->form('/comments/add', 'tournament', array('url' => '/comments/add', 'update' => 'Comments', 'indicator' => 'commentSaved'));?>
         <fieldset>
             <legend><?php __('Add Comment');?></legend>
             <div id="commentSaved" style="display: none; float: right;">
                <h2>Loading...</h2>
             </div>
         <?php
             echo $form->hidden('Comment.foreign_id', array('value' => $tournament['Tournament']['id']));
             echo $form->hidden('Comment.belongs_to', array('value' => 'Tournament'));
             echo $form->input('Comment.name');
             echo $form->input('Comment.email');
             echo $form->input('Comment.web', array('value' => 'http://'));
             echo $form->input('Comment.content');
         ?>
         </fieldset>

     <?php echo $form->end('Submit');?>
     </div>

And here is my 'comment's controller add action:

function add() {
   if($this->RequestHandler->isAjax())
   {
           $this->autoLayout = false;
           $this->autoRender=false;
       $this->Comment->recursive =-1;
       $commentInfos = $this->Comment->findAllByIp($_SERVER['REMOTE_ADDR']);
       $spam = FALSE;
       foreach($commentInfos as $commentInfo)
       {
     if ( time() - strtotime($commentInfo['Comment']['created']) < 180)
     {
         $spam = TRUE;
     }
       }

       if ($spam === FALSE)
       {

     if (!empty($this->data)) {
         $this->data['Comment']['ip'] = $_SERVER['REMOTE_ADDR'];
         $this->Comment->create();
         if ($this->Comment->save($this->data)) {

             $this->Comment->recursive =-1;
             $comments = $this->Comment->findAll(array('Comment.foreign_id' => $this->data['Comment']['foreign_id'], 'Comment.belongs_to' => $this->data['Comment']['belongs_to'], 'Comment.status' =>'approved'));

             $this->set(compact('comments'));
             $this->viewPath = 'elements'.DS.'posts';
             $this->render('comments');
         }
     }
       }
       else
       {
             $this->Comment->recursive =-1;
             $comments = $this->Comment->findAll(array('Comment.foreign_id' => $this->data['Comment']['foreign_id'], 'Comment.belongs_to' => $this->data['Comment']['belongs_to'], 'Comment.status' =>'approved'));
             $this->set(compact('comments'));
             $this->viewPath = 'elements'.DS.'posts';
             $this->render('spam');
       }
   }
   else
   {
       $this->Session->setFlash(__('Invalid Action. Please view a post to add a comment.', true));
       $this->redirect(array('controller' => 'pages', 'action'=>'display', 'home'));
   }
     }

As you can see I've made sure that 'autoLayout' and 'autoRender' are set to false, but in Firebug I still get a 404 error stating /comments/add cannot be found on the production server.

I should also point out that I'm using jquery, jquery.form and jquery.editable as well as a ajax helper created to be used with jquery.

Any help or even suggestions about how to trouble shoot this is really appreciated.

Cheers, Paul

© Stack Overflow or respective owner

Related posts about cakephp

Related posts about AJAX