2011-08-23 58 views
1

所以,大家好我有一個很大的問題,現在用的是由根據發送到該頁面在這種情況下,它是一個按鈕變量按鈕時onclick事件在單擊時會訪問一個數據庫並提取數據庫中的所有內容並將其放入Excel格式。現在的問題是當按鈕被製作時,它總是執行數據庫搜索和文件製作。我知道它必須做到這一點,因爲現在按鈕的製作方式,有沒有改變這個?動態按鈕總是執行製作

if ($action_db) echo "<button class=\"btn\" onClick='".getUDB()."'>" . DBUser . "</button>"; 

這樣:

if ($action_db) echo "<button class=\"btn\" onClick=\"getUDB()\">" . DBUser . "</button>"; 

和發送事件槽Java的腳本,所以它執行getUDB()方法,在我的PHP文件?

謝謝。

行,所以我去和使用的建議,即薩姆說的一部分,並把它放在一個jQuery和變化是這樣的

if ($action_db) echo "<button class=\"btn\" id=\"UDB\">" . DBUser . "</button>"; 

JQuery的:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#UDB").click(function(){ 
      <?getUDB();?> 
     }); 
    }); 

OK所以問題是當我選擇客戶端菜單或菜單的任何其他部分來訪問網頁的那部分時,它會自動執行getUDB方法,並且不會讓我訪問其他任何內容。有什麼建議麼???

+0

郵政getUDB()函數的內容。 –

回答

1

如果你不想PHP函數getUDB()時加載頁面被稱爲做,那麼你是對的 - 要移動這一點爲的Javascript功能。

這樣做echo "foo" . getUDB() . "bar",我假設你的網頁加載速度慢。爲了解決這個問題,你可以使用AJAX調用Javascript。所以你可能想要:

  1. 創建一個單獨的PHP文件,調用getUDB()
  2. 創建您的原始網頁上的JavaScript函數發出GET請求到這個新的,單獨的PHP文件。使用jQuery來做到這一點最簡單,這使得AJAX請求變得簡單易懂 - check out this page
  3. 編寫正確處理來自該頁面的響應所需的Javascript。

SitePoint有一個good tutorial on jQuery and AJAX,檢查出來。

1

您需要向服務器發送請求時啓動任何服務器端的響應事件,或者由傳統的後背部或通過AJAX。

我建議你做你的按鈕到表單中,代替用戶的ID爲隱藏輸入的值:

if ($action_db) { 
    ?> 
    <form action="/getUDB"> 
     <input type="hidden" name="DBUser" value="<?= DBUser ?>" /> 
     <button class=\"btn\" type="submit"><?= DBUser ?></button> 
    </form> 
    <? 
} 

然後設置第二個腳本來處理POST請求/getUDB