2010-10-29 63 views
0

如何調用與JavaScript函數不同的文件中的PHP函數?如何從JavaScript函數調用PHP函數以訪問數據庫

我有一個從onclick函數接收變量的JavaScript函數。該變量是一個我將用來從MySQL數據庫檢索數據的ID。然後將該變量傳遞給一個PHP函數,該函數將訪問數據庫以獲取數據並返回到我的JavaScript函數進行顯示,但它似乎不起作用。我怎樣才能使它工作?我正在使用CodeIgniter PHP。

這是代碼。

JavaScript代碼位於名爲divUpdate.php的不同文件中。

<script type="text/javascript"> 
    function changeDiv(venueID){ 
     //retrieveData(venueID) is a PHP function from venue_model.php 
     var dest = retrieveData(venueID); 
     document.getElementById('venue_description').innerHTML=dest; 
    } 
</script> 

---其中onclick函數調用上面的JavaScript代碼。 ----

<li><a href="#self" class="menulink" class=&{ns4class}; 
        onClick="changeDiv(\''. 
        $venue_details->VenueID. 
        '\')">; 

---功能retrieveData從上面的JavaScript代碼中調用。這是在模型(CodeIgniter)中。 -

function retrieveData($venueID){ 
    $query = $this->db->query("SELECT * FROM venue WHERE VenueID = '$venueID' "); 
    echo $query; 
} 
+2

搜索「使用php的ajax教程」 – h3xStream 2010-10-29 01:27:58

+1

當你說它不起作用時,實際上什麼都不起作用? – Victor 2010-10-29 01:54:33

+0

我希望你在某處逃避$ venueID。 – 2010-10-29 01:59:32

回答

0

你所尋找的是「AJAX」 - 嘗試搜索對谷歌的教程。另外,你會發現通過使用像jQuery這樣的JavaScript庫來執行AJAX請求要容易得多。

這裏是jQuery的AJAX功能: http://api.jquery.com/jQuery.ajax/

2

使用Ajax作爲已經建議。使用jQuery,你會很容易地修復這個問題。

您將需要創建一個控制器來訪問您的Ajax調用。 我,根本不夠,創建Ajax控制器是這樣的:

<?php 
    class Ajax extends Controller 
    { 
     public function index() 
     { 
      $this->output->set_output("This is the AJAX Controller"); 
     } 

     public function get_venue_description($venueId) 
     { 
      $this->load->model('yourmodel'); 
      $data = $this->yourmodel->retrieveData($venueId); 
      $this->output->set_output($data); 
     } 
    } 
?> 

然後你的JavaScript代碼,執行的jQuery後,應該是這個樣子:

<script type="text/javascript"> 
    function changeDiv(venueID) 
    { 
     $.get('/ajax/get_venue_description/' + venueId, function(data) { 
      $('#venue_description').html(data); 
     }); 
    } 
</script> 

我沒有測試它,但我希望你明白這個主意。