2013-05-08 68 views
1

我正在我的項目中實現標籤功能。 在我的demo標籤中,我發現它們在自動補全的javascript函數中傳遞名稱。php:如何將數據庫值傳遞給javascript/jquery函數

這是我的演示項目的功能,

<script> 
    $(function() 
     { 
      var sampleTags = ['c++', 'scala', 'groovy', 'haskell', 'perl', 'erlang', 'apl', 'cobol', 'go', 'lua']; 
     .................. 
     ................. 

所以,我想從我的PHP控制器,該功能通過值,序從我的數據庫表中獲取自動完成值

For example i am getting tags values from my db in my Controller like this: 

` $data["query"] = $this->ordermodel->fetch_orderlist();` 
    $this->load->view('tagpage', $data); //loading my page tag page where above function exists 

現在我怎麼能通過$data["query"]值到上面的JavaScript函數? 請幫忙

回答

2

您可以使用PHP的json_encode將變量回顯到頁面上。這個函數將一個PHP數組或對象轉換成JSON對象,JavaScript可以一起工作:

<script> 
$(function() { 
     var sampleTags = <?php echo json_encode($query); ?>; 
})(); 
</script> 

但更好的方法是通過Ajax請求這些值。說你有一個PHP腳本命名values.php

<?php 
    #... 
    #assign $query here 
    #... 
    echo json_encode($query); 

然後,在JavaScript中,你可以使用jQuery的.ajax功能進行簡單的Ajax請求(要使用sampleTags變量在頁面上):

<script> 
var sampleTags; 

$.ajax({ 
    url: 'values.php' 
}).done(function(data) { 
    if (data) { 
     sampleTags = data; 
    } 
}); 
</script> 

我還沒有測試過這個例子。顯然你會想調整它以適應你的環境。

+1

我認爲這純粹是'$ query'而不是'$數據['查詢']' – Dale 2013-05-08 11:12:37

+0

我想你的意思是'$ data',對嗎?無論哪種方式,這是相同的概念。 – sgroves 2013-05-08 11:14:54

+0

不,我的意思是'$ query' :) Codeigniter會分離出傳遞給視圖的數組的所有索引,這個概念是一樣的,但破碎的代碼是破碎的代碼。 – Dale 2013-05-08 11:17:01

0

你將不得不爲此編寫

$.ajax(
    url  : "<?php echo site_url('controller/method')?>", 
    type : 'POST', 
    data : 'para=1', 
    success : function(data) 
    { 
     if(data){ 
      var sampleTags = data; 
     } 
    } 
); 
+0

,你不必。但阿賈克斯肯定是要走的路。 – sgroves 2013-05-08 11:16:18

+0

@raheel看到你的答案後,我試着你的ajax函數,但它沒有顯示輸出。我在我的問題中更新了我的模型和控制器。請檢查並讓我知道你的建議.. – 2013-05-08 12:58:51

+0

@Ashutosh我只給你一個例子,你可以用你的參數替換。將控制器和方法更改爲您的控制器名稱和方法名稱 – 2013-05-08 13:06:42

0

一個Ajax功能只是附和你的PHP變量

$(function() 
     { 
      var sampleTags = '<?php echo $data["query"]; ?>'