javascript - Hvordan motta JSON-objekt i PHP?


Jeg prøver å sende et JSON-objekt fra en AJAX-forespørsel til serveren min.

Jeg gjør dette med JQuery på denne måten:

  $.ajax({
    type: "POST",
    url: settings.ajax.post,
    dataType: 'json',
    data: basket.aggregate(Basket.EXPORT_JSON, qty),
    success: function(data, textStatus, jqXHR) {
      if (typeof settings.ajax.success == "function") settings.ajax.success(data, textStatus, jqXHR);
    },
    error: function(jqXHR, text, e) {
      if (typeof settings.ajax.error == "function") settings.ajax.error(jqXHR, text, e);
    }
  });

URL-en peker til denne filen på serveren:

<?php

$to = "<my-email-address>";
$subject = "JSON test";
$message = "POST dump:\n\n";

foreach($_POST as $key=>$value)
    {
        $message .= $key . ":" . $value;
    }

mail ($to, $subject, $message);

exit;
?>

Men POST-variabelen ser ut til å være tom, selv om jeg i Firebug kan se at de riktige dataene ble sendt til serveren:

Etter at hver forespørsel sendes, blir ajax-feilfunksjonen kalt, med en udefinert feil (jeg antar fordi det ikke var noe svar fra serveren? Eller jeg vet ikke?)

Svar #1

POST trenger nøkkel-verdi-par, men du sender bare én verdi (en JSON-streng) uten en nøkkel. Det må være et array.

For det andre må du dekode JSON før du kan bruke det i PHP som en array eller et objekt. json_decode() brukes til det.