2012-10-15 126 views
1

我現在正在滋生這個問題一段時間,我找不到答案。Twitter引導,通過jquerys提交表單submit()只刷新頁面

我正在開發一個應用程序與Twitter的Bootstrap和PHP/Mysql,我有一個簡單的表單,我想有一個jQuery確認模式,如果單擊確定單應該張貼表單,如果沒有被點擊什麼都不會發生。

現在我簡化了表單和jQuery已經到最低限度,它仍然無法正常工作。

這是形式我現在有:

<div class="container-fluid"> 
    <div class="row-fluid"> 
     <form method="post" action="" data-confirm="Are you sure you want to delete?"> 
      <div class="span6"> 
       <div class="control-group"> 
        <label class="control-label" for="inputIcon">Add New Network</label> 
         <div class="controls"> 
         <div class="input-prepend"> 
          <span class="add-on"><i class="icon-tag"></i></span> 
          <input class="input-xlarge span6" id="inputIcon" type="text" placeholder="Network Name" name="network"> 
         </div> 
        </div> 
       </div> 
       <div class="control-group"> 
        <label class="control-label" for="inputIcon">Network Timezone</label> 
         <div class="controls"> 
         <div class="input-prepend"> 
          <span class="add-on"><i class="icon-globe"></i></span> 
          <?php echo $this->timezones; ?> 
         </div> 
        </div> 
       </div> 
       <div class="form-actions"> 
        <button type="submit" name="save_network" class="btn btn-primary"><i class="icon-ok icon-white"></i> Save Network</button> 
       </div>  
      </div> 

這是我使用jQuery:

/* confirmation dialogs */ 
$(document).ready(function() { 
    $('form[data-confirm]').submit(function() { 
     var form = this; 
     if (!$('#dataConfirmModal').length) { 
      $('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>'); 
     } 
     $('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm')); 
     $('#dataConfirmModal').modal({ 
      show: true 
     }); 
     $('a#dataConfirmOK').click(function() { 
      $("form").submit(); 
     }); 
     return false; 
    }); 
}); 

而且這是在我的控制器的功能,調用模型

<?php 

    // if settings form was submitted, save settings data 
    if(isset($_POST['save_network'])) 
    { 
     $this->model->insert_network('reports', $_POST); 
    } 

?> 

我不想ajax左右,只是一個簡單的表單提交,奇怪的是,當我手動提交表單,它完美的作品。表單中的數據保存在數據庫中,但是當我使用jquery .submit();表單已提交但沒有保存。

任何幫助將不勝感激。

回答

1
在我的控制器

我檢查形式提交,如果該按鈕的名稱值設置檢查:

if(isset($_POST['save_network'])) 
{ 
$this->model->insert_network('reports', $_POST); 
} 

,當你提交一個表單的jQuery按鈕被從來沒有點擊; HENCE:這是沒有按鈕名稱設置...很好

對不起,尖叫:D但是這讓我忙了6個小時,然後才發現這真的是問題...一個教訓我會永遠不會忘記!

希望這可以幫助其他人:如果您提交使用jQuery形式,和你檢查是否有形式通過查看按鈕名稱在PHP提交......這就是您有jQuery的問題提交表單直接使只有表單字段的名稱值被設置,而不是來自輸入按鈕本身的名稱值。的


所以不用檢查,如果一個表單提交使用:

if(isset($_POST['save_network'])) 

一個也許應該更好地檢查這樣的:

if($_SERVER['REQUEST_METHOD'] == "POST")