2010-11-23 86 views
1

我試圖建立一個表單,其中某些文本字段和文本區域具有自動完成功能。如何使用php將數據提供給jQuery自動完成?

我已經使用WordPress的強大的插件來建立我的表單。我使用jQuery autocomplete plugin作爲自動完成部分。

的代碼看起來是這樣的:

<script> 

      $(document).ready(function(){ 
       var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" "); 
      $("#example").autocomplete(data); 
    }); 
    </script> 

所以基本上我需要使用PHP來從MySQL數據庫中提取數據,並將其輸送到數據變種。我是一個PHP新手,所以我不知道如何做到這一點。誰在強大的插件工作的編碼器建議的VAR數據部分下面的代碼:

<?php 
global $frm_entry_meta; 
$entries = $frm_entry_meta->get_entry_metas_for_field($field_id, $order=''); 
?> //db_frm_entry_metas is the name of the mysql db that stores the values for every field from the form. I suspect get_entry_metas_for_field is a function added by the formidable plugin. $field_id is the id for a given field on the form. 
var data = new Array(); 
<?php foreach($entries as $value){ ?> 
data[] = <?php echo $value ?>; 

<?php } ?> 

我試圖運行該代碼在$ FIELD_ID的地方一個ID號碼,但沒有奏效。我被困在這裏。

我能理解大部分的代碼,除了這一部分:

var data = new Array(); 
<?php foreach($entries as $value){ ?> 
data[] = <?php echo $value ?> 

我沒有得到什麼[]是做有數據...應該在PHP來的數據反饋到VAR數據=行?

我有大約15個表格text/textarea字段,每個字段都需要提取與其給定的field_id相關的數據。除非有更簡單的方法來做到這一點,這意味着我將不得不編寫15個腳本,每個腳本都有一個特定的$ field_id和帶有字段的CSS選擇器的jQuery對象。

任何幫助得到這個工作將非常感謝!

回答

0

的編碼是錯誤的,這樣的:

data[] = something; 

將導致JS語法錯誤,這是一個PHP的速記推動部件到一個數組和JS不起作用。

試試這個:

data.push(unescape('<?php echo rawurlencode($value); ?>'); 
+0

我要走這條路,因爲其他兩條路都在我的頭上。我嘗試在你提供的代碼中插入data [] = something;是。還是行不通。這是代碼的樣子,它在頁面的主體中。PHP的,這WordPress使用生成靜態頁面的模板(形式是其中之一): – 2010-11-24 18:22:10

0

根據自動完成的文檔,你可以通過URL作爲數據參數。話雖這麼說,做一些如下列:

<?php 
    // --- PLACE AT VERY TOP OF THE SAME FILE --- 
    $search = isset($_GET['q']) && !empty($_GET['q']) ? $_GET['q'] : null; 
    if (!is_null($search)) 
    { 
    $matches = Array(); 
    // some search that populates $matches based on what the value of $search is 
    echo implode("\r\n",$matches); 
    exit; 
    } 
?> 

然後,在你的jQuery代碼替換.autocomplete(data)與​​

0

您jQuery將是這樣的

$("#example").change(function(){ 
$.ajax( 
     { 
      type: "POST", 
      url: "php_page.php", 
      data: "data=" + $("#example").val(), 
      beforeSend: function() { 
       // any message or alert you want to show before triggering php_page.php 
      }, 
      success: function(response) { 
       eval(response); 
       // print your results 
      } 

     }); 
}); 

在你的PHP獲得所有信息後的頁面會回顯這樣的結果。

echo "var result=" . json_encode($results); 

然後eval(響應)jquery函數會給你帶有你的結果的javascript變量結果。 希望這會有所幫助...