Comment définir l'en-tête de réponse JSON avec la fonction d'en-tête et retourner les données avec l'appel AJAX?
Dans le développement Web, il est souvent nécessaire de gérer l'interaction des données de demande asynchrones avec le frontal, en particulier lorsque les données sont renvoyées lors de l'utilisation des appels AJAX. Pour nous assurer que le navigateur peut traiter correctement le format de données renvoyé, nous devons définir les informations d'en-tête de réponse correctes. Si nous voulons que les données que nous retournons sont au format JSON, PHP fournit la fonction d'en-tête () pour définir l'en-tête de réponse HTTP. Cet article expliquera comment utiliser la fonction d'en-tête () pour configurer l'en-tête de réponse JSON et renvoyer les données JSON avec AJAX.
Pour retourner les données de format JSON au client, assurez-vous d'abord que le type de contenu est correctement défini sur Application / JSON dans l'en-tête de réponse HTTP. De cette façon, le navigateur saura qu'il recevra des données au format JSON, et non sur HTML ou d'autres formats.
<?php
// Définissez l'en-tête de réponse,Spécifiez le type de données de retour en tant que JSON
header('Content-Type: application/json');
// Créer un tableau associatif,Indique les données à retourner
$response = array(
'status' => 'success',
'message' => 'Data has been successfully processed.'
);
// utiliser json_encode() La fonction convertit le tableau en JSON Format
echo json_encode($response);
?>
Lorsque l'en-tête de réponse JSON correct est défini, les données JSON renvoyées peuvent être obtenues via l'appel AJAX. Supposons que le front-end utilise la fonction fetch () de JavaScript ou $ .ajax () de JavaScript pour envoyer des demandes et recevoir des données. Voici un exemple de l'envoi d'une demande à l'aide de fetch () et de traitement d'une réponse JSON:
fetch('http://m66.net/api/data.php', {
method: 'GET'
})
.then(response => response.json()) // Analyse JSON données
.then(data => {
console.log(data); // 在控制台输出返回的données
})
.catch(error => console.error('Error:', error));
$.ajax({
url: 'http://m66.net/api/data.php',
type: 'GET',
dataType: 'json', // 指定返回的données类型为 JSON
success: function(data) {
console.log(data); // 在控制台输出返回的données
},
error: function(xhr, status, error) {
console.error('Error:', error);
}
});
Voici un exemple complet PHP et AJAX montrant comment configurer l'en-tête de réponse JSON à l'aide de la fonction d'en-tête () et d'obtenir des données via Ajax à l'avant:
<?php
// Définissez l'en-tête de réponse,Spécifiez le type de données de retour en tant que JSON
header('Content-Type: application/json');
// Créer un tableau associatif,Indique les données à retourner
$response = array(
'status' => 'success',
'message' => 'Data has been successfully processed.',
'data' => array('item1', 'item2', 'item3')
);
// utiliser json_encode() La fonction convertit le tableau en JSON Format
echo json_encode($response);
?>
fetch('http://m66.net/api/data.php', {
method: 'GET'
})
.then(response => response.json()) // Analyse JSON données
.then(data => {
console.log(data); // 在控制台输出返回的données
})
.catch(error => console.error('Error:', error));
Assurez-vous que JSON est formaté correctement : les données renvoyées dans PHP doivent être dans un format JSON valide. Vous pouvez utiliser la fonction json_encode () pour convertir les tableaux PHP en chaînes au format JSON.
Problème CORS : Si le front-end et le back-end ne sont pas sous le même nom de domaine, vous pouvez rencontrer le partage de ressources inter-domaines (CORS). Vous devez définir l'en-tête de réponse d'accès à contrôle-allow-origin dans PHP pour permettre les demandes de domaine croisé:
header('Access-Control-Allow-Origin: *');
Cela permettra à toutes les demandes de domaine d'accéder à votre API.
Gestion des erreurs : lors de la gestion des réponses JSON, assurez-vous que le frontal peut gérer correctement les informations d'erreur renvoyées, comme si le code d'état HTTP n'est pas 200.
En définissant l'en-tête de réponse correct et en utilisant AJAX, nous pouvons transmettre efficacement les données JSON entre les extrémités avant et arrière.