Maison > Article > développement back-end > Pourquoi l'appel AJAX de jQuery reçoit-il des données incorrectes même si PHP renvoie 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>
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>
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 :
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!