en utilisant jquery .post de $ () pour renvoyer plusieurs valeurs
Question
Je suis en train d'utiliser un .post $ () de la manière suivante:
$.post("file.php", { file_id: $(this).val()}, function(data){...}
Le file.php
fait alors une requête de base de données et retourne un tableau avec un titre, la description et image de référence.
Ce que je veux faire est alors en mesure de mettre à jour le .val()
pour les champs de formulaire pour chacun. Je comprends comment faire cela sur une seule variable, il serait tout simplement ce qui suit:
$.post("file.php", { file_id: $(this).val()}, function(data){
$('#title').val(data);
}
Mais, comment puis-je obtenir les données renvoyées à être reconnaissable dans jquery soit comme des variables distinctes ou un tableau?
Merci à l'avance
La solution
Voir les docs pour $ .post . Le quatrième paramètre est le type de données. Vous pouvez régler cela à JSON pour vos données de retour à un objet dans parsés ou tableau JavaScript.
$.post(
"file.php",
{ file_id: $(this).val() },
function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); },
'json');
Dans votre fichier file.php, vous pouvez faire quelque chose comme
<?php
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff');
header('Content-Type: application/json');
echo json_encode($return_data);
exit();
Assurez-vous d'inclure l'en-tête () si jQuery connaît vos données est censé être JSON, et d'utiliser json_encode donc il est formaté correctement.
Voir les json_encode docs pour plus d'informations à ce sujet, et docs sur-tête . Remeber vous ne pouvez pas avoir une autre sortie se présenter devant votre tête () et l'impression des données json_encoded, ou l'en-tête, ainsi que le JSON sera invalide.
Autres conseils
Le plus simple est de passer en arrière les valeurs JSON. Vous devrez convertir votre tableau en JSON sur le serveur (il y a beaucoup de bibliothèques côté serveur disponible pour cette ). Et modifier votre méthode .post()
pour renvoyer les données comme JSON en ajoutant un quatrième paramètre comme:
$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json");
Vous pouvez alors remplir vos variables aussi facilement que:
$('#title').val(data.title);
$('#description').val(data.description);