2011-05-03 52 views
0

我正在開發使用codeigniter的網站。我有一個包含添加按鈕和文本框的表單。一旦用戶輸入數據,我必須檢查它是否存在於數據庫中,如果是,則在頁面其他警報用戶中生成動態文本框。我寫了JavaScript來生成動態文本框。我的問題是如何檢查數據庫?如何從JavaScript調用控制器或從控制器調用JavaScript函數?來自控制器的調用javascript函數codeigniter

回答

6

這實際上比你期望的要容易得多..一旦你看到它是多麼偉大,你就會開始使用這一切!

首先,我們將使用jQuery的本地POST函數。

創建您的控制器內的函數,你要訪問,我的建議是「ajax_」

因此,這裏的控制器功能的示例前綴函數名稱:

function ajax_lookUpUsername(){ 
    $username = $this->input->post('username'); 
    $this->db->where('username', $username); 
    $query = $this->db->get('accounts'); 
    if ($query->num_rows() > 0){ 
     echo 0; 
    } else { 
     echo 1; 
    } 
} 

和這裏的您簡單的onclick javascript函數:

function lookUpUsername(name){ 
    $.post( 
     'http://yourwebsite/controller/ajax_lookUpUsername', 
     { username: name }, 
     function(response) { 
      if (response == 1) { 
       alert('username available'); 
      } else { 
       alert('username taken'); 
      } 
     } 
    ); 
} 

第二個參數{ username: name }是你提交值會去,術語「用戶N ame「這裏是關鍵,名字是傳入的值。所以這是一個post-key-value對,通常會與post信息一起發送。

傳入回調函數的變量response是由控制器返回的回顯。交流變得非常簡單。

簡單是驚人的,雖然我只處理php返回0或1,您可以返回非常先進的json對象,您可以爲整個前端程序提供動力。

對於更高級的反應,你可以從你的控制器陣列的這樣迴應:

echo json_encode($array_of_data); 

,這將返回到你,你可以用任何面向對象的方法用一個完美的JSON數據集。我使用這個全部,你會很快太im確定:)

祝你好運男人!隨時聯繫瓦特/任何問題關於擴大反應通過簡單的0或1回波

+0

非常感謝你....我正在開發自動完成輸入框的形式....該模型將傳遞數據...如何在視圖中顯示??? – user735399 2011-05-03 09:13:21

+0

首先,您想要從您的控制器響應json_encode($ array_stuff),因此將該函數包裝在您正在回顯的數組中。 現在,您可以像使用任何json對象一樣從JavaScript中的數據集中讀取數據。響應['key'] =值。取決於返回數組的結構,您可能需要遍歷它或僅引用鍵。 馬克作爲回答如果你滿意:) – Atticus 2011-05-03 09:53:28

+0

謝謝....我將它標記爲回答:)) – user735399 2011-05-04 05:49:54

相關問題