2014-09-12 4 views
0

Я не могу заставить работать. Я пытаюсь отправить форму, используя диалог jquery, и я хочу получить в php, чтобы я мог использовать $ _POST.Jquery Submit Ajax

Любая идея?

HTML:

<div id="table_rows_form"> 
    <form id="fieldsform" action="system/create"> 
     <label for="fields">How many fields are needed?</label> 
     <input type="text" id="fields" name="fields" /> 
     <button type="submit">Submit</button> 
    </form> 
</div> 

Javascript:

$(document).ready(function() { 
    $('#table_rows').on('click', function() { 
     $('#table_rows_form').dialog({ 
      open: function() { 
       $(this).find('[type=submit]').hide(); 
      }, 
      draggable: true, 
      modal: true, 
      resizable: false, 
      closeOnEscape: false, 
      width: 'auto', 
      minHeight: 235, 
      title: 'Number of Fields', 
      dialogClass: 'no-close', 
      buttons: { 
       "Send": function() { 
        $('#fieldsform').submit(function(event) { 
         var formData = { 
          'fields': $('input[name=fields]').val() 
         }; 
         $.ajax({ 
          type: 'POST', 
          url: $('#fieldsform').attr('action'), 
          data: formData, 
          dataType: 'json', 
          encode: true 
         }); 
        }); 
       }, 
       "Cancel": function() { 
        $(this).dialog('close'); 
       } 
      } 

     }); 
     return false; 
    }); 
}); 

PHP:

print_r($_POST); 

Диалог открывается корректно, но при нажатии кнопки отправки не делает ничего и не дает любая ошибка на консоли. Любая идея об ошибке? Я новичок с jquery.

+0

'$ ('# fieldsform'). Представить (функция (событие) {' добавляет 'подать 'обработчик событий в' # fieldsform'. Может быть, вы должны удалить эту строку (и связанный с ней}); ' – Regent

+0

попробуйте использовать event.preventdefault() внутри fieldsform submit – Sumeet

+0

@Sumeet Я пробовал и ничего не менял – user3718566

ответ

0

Вы просто добавляете обработчик отправки с кодом $('#fieldsform').submit(...), чтобы он ничего не запускал.

Скорее, вы должны сделать это на документ готов, и в обработчик щелчка для кнопки "Отправить", вызовите $('#fieldsform').submit();

+0

Итак, вы говорите, что нужно построить $ ('# fieldsform'). submit (...) вне диалогового окна, а затем вызвать его кнопкой: «Отправить»: $ ('# fieldsform'). Submit(); правильно? – user3718566

+0

@ пользователь3718566 есть. И не забудьте добавить 'return false' в конце функции обработчика отправки, чтобы предотвратить поведение' form' по умолчанию (если вы, конечно, хотите его предотвратить). – Regent

+0

Да. Если вы поместите его в функцию обратного вызова «Отправить», он будет прикреплять нового обработчика «отправить» к форме каждый раз, когда кликется «Отправить». Это немного запутанно: '.submit()' будет отправлять, а '.submit (callback_function)' только привязывает обработчик. – Lian