2016-08-04 4 views
0

Ich verwende Folgendes, um Daten aus einer Datenbank zu lesen.Jquery - Parsing zurückgegeben AJAX Daten in bestehende für Felder

$.ajax({ 
    url: 'loader.php', 
    success: function(data) { 
    console.log(data) 
    } 
}); 

Dies kehrt: [{"name":"Bob Green","ID":"1234"}]

die zurückgegebenen Daten erstellt wird von PHP und das Format einfach manuell erstellt wird und dann echo'd zurück. Ich kann ändern, wie das gemacht wird, es macht es einfacher.

Sobald ich die data zurückgegeben habe, möchte ich ein vorhandenes Formular aktualisieren. Die Formularfeldnamen stimmen mit den Schlüsseln in den zurückgegebenen Daten überein. Die meisten sind Textfelder, aber es gibt ein paar Dropdown-Listen und Kontrollkästchen.

Ich habe das folgende versucht, das ich auf einer anderen Frage fand, aber das hat nicht funktioniert.

function populate(frm, data) { 
    $.each(data, function(key, value){ 
    var $ctrl = $('[name='+key+']', frm); 
    switch($ctrl.attr("type")) 
    { 
     case "text" : 
     case "hidden": 
     $ctrl.val(value); 
     break; 
     case "radio" : case "checkbox": 
     $ctrl.each(function(){ 
      if($(this).attr('value') == value) { $(this).attr("checked",value); } }); 
     break; 
     default: 
     $ctrl.val(value); 
    } 
    }); 
} 

Wenn ich Konsole die key & value angemeldet zeigte, dass es die Daten als indiviual Buchstaben nicht name:Bob Green & ID:1234

Kann mir jemand in die richtige Richtung weisen.

Dank

Antwort

1

Es ist möglich, dass Ihr php Code die Daten als String ohne entsprechende Header zurück, die Ihren Browser json das Ergebnis zu handhaben erzählt.

Dazu können Sie:

$data = /* Some variable that contains your data */; 
header('Content-Type: application/json'); 
echo json_encode($data); 

Eine weitere Option ist Ihre Ajax-Anforderung zu sagen, das Ergebnis der Anfrage als json zu handhaben:

$.ajax({ 
    url: 'loader.php', 
    dataType: 'json', // This way jquery will try to handle the returned data as json object 
    success: function(data) { 
     console.log(data); 
     console.log(data); 
    } 
}); 

Beachten Sie, dass diese nicht die gleiche :

console.log('[{"name":"Bob Green","ID":"1234"}]') 
    [{"name":"Bob Green","ID":"1234"}] 

console.log([{"name":"Bob Green","ID":"1234"}]) 
    [Object]: 
     ID: "1234" 
     name: "Bob Green" 
+0

Danke das hilft und das funktioniert jetzt :) – Rocket