2011-06-30 38 views
7

我目前是以下數據反饋JQuery的自動完成如何獲取PHP腳本將數據提供給JQuery自動完成?

var network_autocomplete=[ 
       "ActionScript", 
       "AppleScript", 
       "Asp", 
       "BASIC", 
       "C", 
       "C++", 
       "Clojure", 
       "COBOL", 
       "ColdFusion", 
       "Erlang", 
       "Fortran", 
       "Groovy", 
       "Haskell", 
       "Java", 
       "JavaScript", 
       "Lisp", 
       "Perl", 
       "PHP", 
       "Python", 
       "Ruby", 
       "Scala", 
       "Scheme" 
      ]; 

      $("#network").autocomplete({ 
       source: network_autocomplete 
      }); 

我需要修改這從一個PHP網頁檢索結果的陣列。有人可以幫我修改這個,所以我可以在JavaScript中做到這一點?

network_autocomplete=data 

目前,該代碼從一個SQLite表以這種方式檢索數據:

try { 
    $db = new PDO('sqlite:/tmp/bacnet.db'); 
    $query = "SELECT net, name, FROM network"; 

    foreach ($db->query($query) as $row) { 
     $networks[] = array('net' => $row['net']); 
    } 

    echo json_encode($networks); 
    return json_encode($networks); 
} catch (PDOException $e) { 
    echo json_encode(array('message' => 'Could not connect to the database')); 
} 
+0

SELECT網,名稱,從網絡有UNUSE逗號,更改爲選擇網絡,名稱從網絡 –

+0

也刪除你的回聲線 –

+0

爲什麼你同時回聲和返回? – Mustafa

回答

1

變化$networks[] = array('net' => $row['net']);
$networks[] = $row['net']; ,你不應該有回報,除非這是一個函數(如果這是一個函數,爲什麼它有一個回聲?)

0

我做什麼,當我需要這個是把一些PHP直接在javascript中,所以

foreach ($db->query($query) as $row) { 
    $networks[] = '{ label: "blah", value: "' . $row['net'] . '" }'; 
} 
$autocomplete = implode(",",$networks); 

然後腳本可以做,

var network_autocomplete = [$autocomplete]; 
$("#network").autocomplete({ 
    source: network_autocomplete 
}); 

裏面我希望這有助於

+2

如果*有任何機會*數據可能包含引號或其他非JavaScript字符串友好字符,像這樣將字符串連接在一起可能會中斷,或者在最壞的情況下讓您打開XSS攻擊。使用'json_encode',它的輸出完全可以嵌入到JavaScript中。 – s4y

0

你可以做如下因素:

<?php 
$values = array("'foo'", "'bar'", "'baz'"); ?> 

<script> 
    $(function() { 
     var network_autocomplete = [ 
      <?php echo join(",", $values) ?> 
     ]; 
    ... 
</script> 
相關問題