Je travaille avec jQuery AJAX. En utilisant un appel AJAX, j'invoque une page PHP. Par défaut, il renvoie une valeur unique à la fonction success d'AJAX. Cependant, je souhaite récupérer plusieurs données individuellement. Que puis-je faire?

Voici le code jQuery avec AJAX, qui renvoie une seule valeur:

function getTime(){
  $.ajax({
    type: "POST",
    url: "test.php",
    data: {
      fd: sdate,
      sd: edate
    },
    dataType: "text",
    success: function(msg) {
      $("#results").text(msg);
    }
  });
};

Test.php:

echo $days;
echo $hours;
echo $minutes;
echo $seconds;
0
Jhanvi thanki 12 avril 2018 à 17:25

3 réponses

Meilleure réponse

En règle générale, pour renvoyer plusieurs réponses, la façon la plus simple de procéder consiste à renvoyer un tableau codé json. Quelque chose comme ce qui suit devrait fonctionner.

echo json_encode( array(
    "days" => $days,
    "hours" => $hours,
    "minutes" => $minutes,
    "seconds" => $seconds
) );

Étant donné que votre demande ajax contient dataType: "text", vous devrez analyser la réponse pour l'utiliser avec JSON.parse(msg), mais si vous la modifiez en dataType: "json", vous ne devrez pas effectuer cette étape car jQuery essaiera pour l'analyser automatiquement pour vous.

3
Taplar 12 avril 2018 à 14:30

Votre test.php serait comme ça

echo json_encode( array(
    "days" => $days,
    "hours" => $hours,
    "minutes" => $minutes,
    "seconds" => $seconds
));

Et sur le succès ajax

success: function(msg) {
    var result = $.parseJSON(msg);
    console.log(result.days)
}
0
anulal sreeranjanan 12 avril 2018 à 14:36

La bonne façon est d'utiliser un tableau et de le coder en JSON.

 echo json_encode( array(
  "days" => $days;
  "hours" => $hours;
  "minutes" => $minutes;
  "seconds" $seconds;
 )
);

Mais vous devez utiliser le type de données JSON sinon vous devez analyser la réponse comme

    var result = $.parseJSON(response);
    console.log(result.days)
0
Umer Hayat 12 avril 2018 à 15:05