Passing data from ajax in elgg

232 Views Asked by At

This is using Elgg 1.8, social networking engine. I'm new to ajax and trying to make the form submit without refresh, it submits the form but adds item to the list without title. The form is displayed in fancybox popup.

Here is my document ready script:

$(document).ready(function() { $('.elgg-form-announcements-save').live('submit', function(e) {

   //e.preventDefault();

   var $form = $(this);

   elgg.action($form.attr('action'), {

     data: $form.serialize(),

    success: function(data) {

      // check the status and do stuff
    //e.preventDefault();
      var river = $('ul.announcements_list');
                              if (river.length < 1) {
          river.append(data.output);          } else {                
          $(data.output).find('li:first').hide().prependTo(river).slideDown(500);
      };
                  $.fancybox.close();

    }

   });

   return false; // prevent the form from submitting
 e.preventDefault();

}); });

Here is code in the action php file:

if ($announcement->save()) {
elgg_clear_sticky_form('announcement');

system_message(elgg_echo('announcement:save:success'));

if (elgg_is_xhr()) {
$options = array( 'type' => 'object', 'subtype' => 'announcements', 'full_view' => false, 'pagination' => false, 'limit' => 1 );
$newannouncement = elgg_list_entities($options); echo json_encode($newannouncement); }
} else {

I'm not sure what I need to do here, maybe use "success: function(json) {" instead of "success: function(data) {" but not sure how to implement that.

I tried using ajaxForm with no success.

Thank you.

0

There are 0 best solutions below