Fix for Fix for Fix for Drupal Ajax Submit with Web Forms

  1. <?php # put this in additional validation inside your form...  and you can submit via AJAX!
  2.   $submission = array();
  3.   $enabled = TRUE;
  4.   $preview = FALSE;
  5.   $args = array('submission' => array(), 'enabled' => true, 'preview' => false);
  6.   drupal_execute('webform_client_form_642_1',$_POST,$args);
  7. ?>
  8.  
  9. Here is the jquery kinda sloppy though
  10.  
  11.     $(".slide form").each(function(i, domForm){
  12.         var $submit = $(domForm);
  13.         $submit.submit(function(){return false;});
  14.         var $button = $(domForm).children('input[type="image"]');
  15.         var $entry = $(domForm).children('input[type="text"]');
  16.         var $drupal = $(domForm).children('input[type="hidden"]');
  17.         var $action = $(domForm).attr('action');
  18.         var $container = $(domForm).parent();
  19.         var $boundary = '-----------------------------1626259126772';
  20.         var $content_lead = '\nContent-Disposition: form-data;'
  21.         $button.unbind("click");
  22.         $(domForm).unbind("submit");
  23.         $button.click(function(){
  24.             var $entered = '';
  25.             $container.fadeOut("slow");
  26.                 $entry.each(function(){
  27.                         var $blah = $(this).attr('name');
  28.                         var $blah2 = $(this).val();
  29.                         $entered += $boundary + $content_lead + ' name="' + $blah + '"\n\n' + $blah2+'\n';
  30.                 });
  31.                 $drupal.each(function(){
  32.                     var $blah = $(this).attr('name');
  33.                         var $blah2 = $(this).val();
  34.                         $entered += $boundary + $content_lead + ' name="' + $blah + '"\n\n' + $blah2+'\n';
  35.                 });
  36.                
  37.                 $entered += $boundary + '\nContent-Disposition: form-data; name="op"\n\nSubmit\n'+$boundary +'--\n\n';
  38.                 $.ajaxSetup({contentType: 'multipart/form-data; boundary=---------------------------1626259126772', cache: false});
  39.                         $.post($action, $entered  , function(data){
  40.                                         $container.html(data);
  41.                                         $container.fadeIn("normal");}
  42.                                 , "html");
  43.                 return false;
  44.             });
  45.     });

Submit Fix

Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Select the syntax highlighting mode to use.