2013-12-03 47 views
0

我有一個模式彈出窗口,其中我已經放入了允許爲特定帳戶創建新聯繫人的窗體。該模式工作正常,表單工作很好,但是一旦我點擊該按鈕,它就會返回到創建新聯繫人之前已經顯示在聯繫人列表中的內容。我明顯地使用F5來刷新頁面,然後問起我是否確定要重新加載表單。點擊是,它顯示已添加的聯繫人,但在後臺添加了另一個具有相同詳細信息的聯繫人。刷新頁面重新加載POST動作

如何避免這種情況?我是否必須清除POST或者將頁面功能重新加載到按鈕或我用來創建聯繫人的功能?

這是我運行代碼的一部分:

Class Client 
{ 
var $_newcontact; 
... 
    public function AddContact() 
{ 
    switch($this->_newcontact) 
    { 
     case "BackEnd" : 
      $this->GetData_NewContact(); 
      if($this->ValidateNewContact()==true) 
      { 
       if($this->AddNewContact($_GET['ClientID'])==true) 
       { 
        echo "New contact has been added"; 
       } 
       else 
       { 
        echo "Contact hasn't been created"; 
       } 
      } 
    } 
} 
} 

在new_contact頁我用的是代碼:

$Client= new Client(); 
if($_POST['NewContact']) { 
    $Client->_newcontact = "BackEnd"; 
    $Client->AddContact(); 
} 

還有有一個在模態窗體(我實際上使用bootstrap模式)。我猜這是不需要的代碼。

然後按鈕代碼:

<button type="submit" value="submit" name="NewContact" id="NewContact" class="btn btn-primary">Add</button> 

我想,以確保一旦添加按鈕被點擊,和數據的全面驗證設置爲true等等,那麼它會重新與該頁面聯繫人列表並顯示已添加的聯繫人(我有一個從數據庫中取得的循環)。

我該如何做到這一點?

+2

您需要使用POST-redirect-GET。刷新後將刷新GET,這不會導致提示。 –

回答

0

「但是,一旦我點擊按鈕」。如果這是一個jQuery模式,我認爲這是模式中的「完成」按鈕。

在模態的功能齊全,你可以這樣做:

  "Complete": function() 
      { 
        window.location.replace('index.php'); 
      } 

與任何你想要的頁面替換的index.php。