2014-09-12 104 views
0

我似乎無法使此工作。我試圖提交表單使用jQuery對話框,我想在PHP中接收,所以我可以使用$ _POST。Jquery提交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 2014-09-12 11:16:57

+0

嘗試使用event.preventdefault()內fieldsform提交 – Sumeet 2014-09-12 11:17:10

+0

@Sumeet我試過,不改變任何東西 – user3718566 2014-09-12 11:20:25

回答

0

你只是增加了提交處理程序與您的代碼$('#fieldsform').submit(...)所以它不會觸發任何東西。

相反,你應該做的是在文件準備好,並在單擊處理程序 「發送」 按鈕,調用$('#fieldsform').submit();

+0

所以你說要建立$('#fieldsform')。在對話框外部提交(...),然後在按鈕上調用它: 「發送」:$('#fieldsform')。submit();對? – user3718566 2014-09-12 11:24:49

+0

@ user3718566是的。並且不要忘記在提交處理函數的末尾添加'return false'以防止默認的'form'行爲(如果你當然想阻止它)。 – Regent 2014-09-12 11:27:58

+0

是的。如果你把它放在「發送」回調函數中,每次點擊「發送」時它都會在表單中附加一個新的「提交」處理程序。這有點令人困惑:'.submit()'會提交,而'.submit(callback_function)'只附加處理程序。 – Lian 2014-09-12 11:28:07