2015-10-21 1 views
5

Ich versuche eine Autovervollständigung zu schreiben, die die Autovervollständigen-Elemente einmal laden, wenn die PHP-Seite geladen wird. Mit den Elementen, die von mysql DB geholt werden, habe ich Mag ich Array benötigenmysql db-Ergebnis als JSON-Array konvertieren

<?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); 
} 

?> 

einen JSON-Array erstellen, wie ähnlichen Javascript Array

<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> 

wenn ich nenne dieses Array wie dies in meinem auto-vervollständigen dies nicht funktioniert

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

was ist der Array-Typ .. , wie dies zu tun.

das ist der Teil der automatischen Vervollständigung

$(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

Sind Sie Javascript und PHP auf der gleichen Seite mit? – sandeepsure

+0

ja beide sind in einer Seite – NSK

Antwort

2

Bitte ersetzen

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

mit

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

nach dem Ändern der ** var bankSource = ; ** Die Autovervollständigung zeigt leere Ergebnisse – NSK

+0

Ist das generierte Javascript-Array in Ordnung? Gibt es Fehler in Ihrer Konsole? –

+0

Es gibt keine Fehler in der Konsole, ich bin verwirrend mit dem Array – NSK

0

Sie folgende tun sollten:

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

Änderung dieser Zeile wie diese,

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

zu

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

Php-Variable auf js Variable mit Anführungszeichen und zugewiesen eingeschlossen.

2

Hier ist ein Beispielbeispiel, das ich nach Ihren Anforderungen geändert habe. Bitte studieren Sie es und lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.

<?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

wenn die ** [] ** in der bankSource11 entfernen Variable es funktioniert ..Vielen Dank für Ihre Mühe – NSK

+0

@NSK Wenn Sie diese Antwort hilfreich finden Markieren Sie es als akzeptiert und upvote. So können andere auch Vertrauen bekommen. – sandeepsure

0

Beachten Sie die einfachen Anführungszeichen, weil es string:

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