2015-10-21 12 views
5

Próbuję napisać autouzupełnianie, które automatycznie uzupełniane elementy ładują jeden raz, gdy strona PHP ładuje. Z rzeczami, które są pobierane z mysql DB, mam stworzyć tablicę json jak tenmysql db wynik konwertowany jako tablica json

<?php 
$bnkArray = array(); 
$sql_bnk = mysql_query("SELECT BName, BCode, ID FROM bank"); 
while($rBnk = mysql_fetch_array($sql_bnk)){ 

    $bnkDet = array(
     'label' => $rBnk['BName'], 
     'value' => $rBnk['BName'], 
     'otherDetails' => $rBnk['BName'].'||'. $rBnk['BCode'].'||'. $rBnk['ID'] 
    ); 
    array_push($bnkArray, $bnkDet); 
} 

?> 

muszę tę tablicę, jak się ten javascript tablicy

<script> 

var bankSource11 = [ 
     { 
     value: "jquery", 
     label: "jQuery", 
     otherDetails: "the write less, do more, JavaScript library", 

     }, 
     { 
     value: "jquery-ui", 
     label: "jQuery UI", 
     otherDetails: "the official user interface library for jQuery", 

     }, 
     { 
     value: "sizzlejs", 
     label: "Sizzle JS", 
     otherDetails: "a pure-JavaScript CSS selector engine", 

     } 
    ]; 
</script> 

jeśli zgłoszę tej tablicy jak to w moim auto zakończyć ten nie działa

var bankSource = [<?php echo $bnkArray; ?>]; 

co jest tego typu tablica .. jak to zrobić.

jest to część autouzupełnianie

$(this).autocomplete({ 
      minLength: 0, 
      source: bankSource, 
      focus: function(event, ui) { 
       $(this).val(ui.item.label); 
       return false; 
      }, 
      select: function(event, ui) { 
       console.log(ui.item.value +' ____ ' + ui.item.otherDetails); 
       $("#project").val(ui.item.label); 
       $("#project-id").val(ui.item.value); 
       $("#project-description").html(ui.item.otherDetails); 

       return false; 
       } 
      }) 


     } 
+0

Używasz JavaScript i PHP na tej samej stronie? – sandeepsure

+0

tak oba są na jednej stronie – NSK

Odpowiedz

2

Proszę wymienić

var bankSource = [<?php echo $bnkArray; ?>]; 

z

var bankSource = <?php echo json_encode($bnkArray); ?>; 
+0

po zmianie ** var bankSource = ; ** autouzupełnianie pokazuje puste wyniki – NSK

+0

Czy wygenerowana tablica javascript wygląda dobrze? Czy są jakieś błędy w konsoli? –

+0

nie ma żadnych błędów w konsoli, jestem mylący z tablicą – NSK

0

należy zrobić co następuje:

var bankSource11 = [<?php echo json_encode($bnkArray); ?>]; 
1

zmiana ta linia tak,

var bankSource = [<?php echo $bnkArray; ?>]; 

do

var bankSource = "<?php echo json_encode($bnkArray); ?>"; 

zmiennej PHP jest ogrodzony z cytatami i przypisać do zmiennej JS.

2

Oto przykładowy przykład, który zmodyfikowałem zgodnie z Twoimi wymaganiami. Prosimy o zapoznanie się z nim i poinformowanie mnie, jeśli masz jakiekolwiek pytania.

<?php 
    $bnkArray = array(); 
    $sql_bnk = mysql_query("SELECT BName, BCode, ID FROM bank"); 
    while($rBnk = mysql_fetch_array($sql_bnk)){ 

     $bnkDet = array(
      'label' => $rBnk['BName'], 
      'value' => $rBnk['BName'], 
      'otherDetails' => $rBnk['BName'].'||'. $rBnk['BCode'].'||'. $rBnk['ID'] 
     ); 
     array_push($bnkArray, $bnkDet); 
    } 

    ?> 


    <head> 
     <meta charset="utf-8"> 
     <title>jQuery UI Autocomplete - Default functionality</title> 
     <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
     <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
     <link rel="stylesheet" href="/resources/demos/style.css"> 
     <script> 
     $(function() { 
     var bankSource11 = <?php echo json_encode($bnkArray); ?>; 
     $("#My_Input").autocomplete({ 
      source: bankSource11 
     }); 
     }); 
     </script> 
    </head> 
    <body> 

    <div class="ui-widget"> 
     <input id="My_Input"> 
    </div> 
+0

jeśli ** [] ** usunąć w bankuSource11 zmienna działa ...dziękuję za wysiłek – NSK

+0

@NSK Jeśli uważasz, że ta odpowiedź jest pomocna, Oznacz to jako zaakceptowane i pobrane. Inni mogą także zyskać pewność siebie. – sandeepsure

0

Note pojedyncze cytaty, bo to wyrażenie:

var bankSource = '<?php echo json_encode($bnkArray); ?>';