2011-01-08 4 views
3

Rückkehr Ich versuche, ein $ .post() auf folgende Weise zu verwenden:

$.post("file.php", { file_id: $(this).val()}, function(data){...} Die file.php führt dann eine Datenbankabfrage und gibt ein Array mit einem Titel , Beschreibung und Bildreferenz.

Was ich dann tun möchte, ist in der Lage, die .val() für Formularfelder für jedes zu aktualisieren. Ich verstehe, wie dies auf einer einzigen Variablen zu tun, wäre es nur die folgenden sein:

$.post("file.php", { file_id: $(this).val()}, function(data){ 
    $('#title').val(data); 
} 

Aber wie bekomme ich die Daten in Jquery entweder als getrennte Variablen oder als Array erkennbar sein zurückgekehrt?

Vielen Dank im Voraus

Antwort

7

the docs for $.post See. Der vierte Parameter ist der Datentyp. Sie können dies auf JSON setzen, damit Ihre Rückgabedaten in ein JavaScript-Objekt oder -Array geparst werden.

$.post(
    "file.php", 
    { file_id: $(this).val() }, 
    function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); }, 
    'json'); 

In Ihrem file.php-Datei können Sie so etwas wie

<?php 
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff'); 

header('Content-Type: application/json'); 
echo json_encode($return_data); 
exit(); 

Achten Sie darauf, gehören die header() tun so jQuery Ihre Daten kennt soll JSON sein, und json_encode zu verwenden, so es ist richtig formatiert.

Weitere Informationen hierzu finden Sie in der Dokumentation json_encode, und unter docs on header. Denken Sie daran, Sie können keine andere Ausgabe vor Ihrem header() haben und die json_encoded-Daten ausgeben, oder der Header sowie der JSON sind ungültig.

+0

hat perfekt funktioniert, aber ich denke, Sie haben einen Tippfehler in Ihrem Code ($ return_data || $ return_array) Danke! – TH1981

+0

Hoppla, das stimmt. Ich werde es für die Nachwelt bearbeiten. Ich bin froh, dass es hilfreich war! – JAL

3

Der einfachste Weg ist es, die Werte als JSON zurücklaufen. Sie müssen Ihr Array auf dem Server in JSON konvertieren (es gibt viele server-side libraries available for this). Und ändern Sie Ihre .post() Methode die Daten als JSON zurück durch einen vierten Parameter wie das Hinzufügen:

$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json"); 

Anschließend können Sie Ihre Variablen bevölkern so einfach wie:

$('#title').val(data.title); 
$('#description').val(data.description);