Maison > développement back-end > tutoriel php > Pourquoi l'appel AJAX de jQuery reçoit-il des données incorrectes même si PHP renvoie JSON ?

Pourquoi l'appel AJAX de jQuery reçoit-il des données incorrectes même si PHP renvoie JSON ?

Patricia Arquette
Libérer: 2024-10-31 20:55:17
original
893 Les gens l'ont consulté

Why is jQuery's AJAX Call Receiving Incorrect Data Even Though PHP is Returning JSON?

PHP renvoie JSON à l'appel AJAX de jQuery

Malgré vos efforts pour communiquer avec PHP via la fonctionnalité AJAX de jQuery, vous rencontrez continuellement le " erreur "sélecteur activé". De plus, les données récupérées semblent incorrectes. Examinons le problème et identifions la cause potentielle.

PHP avec retour JSON

L'extrait fourni ci-dessous illustre comment renvoyer des données JSON en PHP :

<code class="php">header('Content-Type: application/json');
echo json_encode([
  'return' => 1,
  'msg1' => 'Message sent OK, we will be in touch ASAP'
]);
exit;</code>
Copier après la connexion

Remarquez l'inclusion de header('Content-Type: application/json'); avant echo pour spécifier le type de contenu JSON.

JavaScript et AJAX

Votre code JavaScript ci-dessous devrait gérer l'appel AJAX avec succès :

<code class="javascript">$('#msgid').html('<h1>Submitting Form (External Routine)</h1>');
if ($('#formEnquiry').valid()) {
  $("#msgid").append("<h1>(Outside Ready) VALIDATED send to PHP</h1>");
  $.ajax({
    url: "ContactFormProcess3.php",
    type: "POST",
    data: $('#formEnquiry').serialize(),
    dataType: "json",
    success: function (data) {
      alert("SUCCESS:");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    },
    error: function (data) {
      alert("ERROR: ");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    }
  });
} else {
  $('#msgid').append('<h1>(Outside Ready) NOT VALIDATED</h1>');
}</code>
Copier après la connexion

Assurez-vous que votre appel AJAX ne se déclenche qu'après la validation du formulaire pour éviter les requêtes inutiles du serveur.

Données JSON supposées répertoriées

La sortie que vous obtenez n'est pas au format JSON. Il semble que l'objet XHR de jQuery soit imprimé à la place.

Pièges potentiels

Vérifiez les points suivants :

  • Assurez-vous que votre script PHP est répondre avec le type de contenu correct (Content-Type : application/json).
  • Assurez-vous que le dataType de votre appel AJAX est défini sur "json".
  • Vérifiez que le script s'exécute correctement sur le serveur, et que PHP est configuré pour gérer la sortie JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal