Comment analyser le JSON imbriqué envoyé via AJAX en PHP

Oct 06 2020

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

2 Barmar Oct 06 2020 at 12:43

$.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>";
}