2017-02-07 2 views
0

Ich habe ein Problem mit einer Ajax-Funktion, die ein Listenfeld mit Null-Optionen auffüllt. Ich bin ziemlich neu und muss etwas übersehen. Die DB-Verbindung wird über Sugarcrm hergestellt und funktioniert, da ich sie auch für eine Auto-Complete-Funktion verwende. Ich kann einfach nicht die Möglichkeiten finden, etwas außer Leeres zu bevölkern.Populating Wählen Sie die Box mit PHP und Ajax zurückgeben leer

index.php

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'search.php', 
       type: 'json', 
       success:function(response){ 
        var len = response.length; 
        $("#sel1").empty(); 
        for(var i = 0; i<len; i++){ 
         $("#sel1").append("<option value='"+name+"'></option>"); 

        } 
       } 
      }); 
     }); 

</script> 


      <select id="sel1" multiple size="6"> 
       <option value="0">- Select -</option> 
      </select>  

search.php

<?php 

global $db; 

$rolelistQry = "SELECT distinct name from acl_roles"; 


$rolelistData = $db->query($rolelistQry); 

$name_array = array(); 

    while($row = $rolelistData->fetch_assoc()){ 
     $name = $row['name']; 
     $name_array[] = array("name" => $name); 
    } 
echo json_encode($name_array); 



?> 

Antwort

1
$("#sel1").append("<option value='"+name+"'></option>"); 

Name Variable existiert nicht. Versuchen Sie, es zu response.name

$("#sel1").append("<option value='"+response.name+"'>"+response.name+"</option>"); 
+0

Ja, ich habe das gerade gesehen. Ich habe Post – user2168066

+0

nvm bearbeitet. sah es. Wie auch immer, können Sie sehen, was "Antwort" zurückkommt? mach eine schnelle console.log (Antwort) und sag mir, was es zurückgeben wird –

+0

und genauso wie skagzilla erwähnt. "" –

0

Ich vermute, Sie bekommen eine Reihe von leeren Optionen?

Ist die richtige Syntax: Der Wert der Option (wenn ausgewählt) ist 0, und es wird Select angezeigt.

Also, wenn Sie neue Elemente in dem Ajax-Callback anhängen Sie die Optionen etwas zeigen wollen:

<option value='name'>NAME</option> 
+0

Das macht Sinn. Ich bekomme immer noch die leeren Optionen, also vermute ich, dass es jetzt mit der Antwort zu tun hat. – user2168066

+0

Wird in php name_array jemals initialisiert (name_array = [])? Ich bin mit Majorlogik, wir brauchen ein paar mehr Informationen darüber, wie die Antwort zurückkommt. – skagzilla

+0

Ich fand das Problem, ich hatte den Typ = JSON, nicht DataType = JSON. – user2168066

0

In der Tat Sie nicht durch den Array-Namen Looping,

Dies sollte funktionieren :

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'search.php', 
       type: 'json', 
       success:function(response){ 

        var result = $.parseJSON(response); 

        var len = result.length; 

        $("#sel1").empty(); 
        for(var i = 0; i<len; i++){ 

         $("#sel1").append("<option value='"+ result[i]['name'] +"'></option>"); 

        } 
       } 
      }); 
     }); 

</script> 


      <select id="sel1" multiple size="6"> 
       <option value="0">- Select -</option> 
      </select> 
0

Sie versuchen, Antwort als ein Array zuzugreifen, richtig?

Sie werden so etwas wie

$("#sel1").append("<option value='"+response[i].name+"'>"+response[i].name+"</option>"); 

um die Einzelteile zu erhalten aus dem Antwort-Array tun müssen. (geändert von Majorlogics Antwort)