Comment analyser le JSON imbriqué envoyé via AJAX en PHP
Disons que j'ai cet AJAX envoyé via jQuery à un serveur PHP
$.ajax({
url: woocommerce_admin_meta_boxes.ajax_url,
data: data,
type: 'POST',
success: function (res) {
if (res.success) {
location.reload();
}
}
});
et dataressemble à ça
data = {
order_id: woocommerce_admin_meta_boxes.post_id,
order_items : [
{
order_item_id: 69420,
amount: 420
},
{
order_item_id: 42069,
amount: 69
}
]
};
Ce que j'ai découvert, c'est qu'en utilisant PHP $_POST, je peux accéder à l'identifiant de la commande comme ceci
$order_id = $_POST['order_id'];
Cependant, je ne suis pas sûr de la façon dont je peux accéder à des éléments à order_itemspartir de data. D'après ce que j'ai vu dans cet article de stackoverflow , il existe une fonction PHP appelée json_decode(), mais je ne sais pas trop comment l'utiliser avec AJAX ou $_POST.
Réponses
$.ajax()n'utilise pas le codage JSON, il envoie un format codé en URL, il n'est donc pas nécessaire d'utiliser json_decode().
Pour accéder aux données imbriquées, utilisez simplement un tableau ordinaire accédant à la $_POSTvariable.
foreach ($_POST['order_items'] as $item) {
echo "Item ID: " . $item['order_item_id'] . "<br>"; echo "Amount: " . $item['amount'] . "<br>";
}