javascript - Kako primiti JSON objekt u PHP-u?


Pokušavam poslati JSON objekt s AJAX zahtjevom na svoj poslužitelj.

Radim to s JQuery ovako:

  $.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 je usmjeren na ovu datoteku na poslužitelju:

<?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;
?>

Ali čini se da je POST varijabla prazna, iako mogu vidjeti u Firebugu da su ispravni podaci poslani na poslužitelj:

Nakon slanja svakog zahtjeva, poziva se ajax funkcija za grešku, s neodređenom greškom (pretpostavljam zato što nije bilo odgovora s poslužitelja? Ili ne znam?)

Odgovor #1

POST zahtijeva parove ključeva i vrijednosti, ali ti šalješ samo jednu vrijednost (JSON string) bez ključa. Trebalo bi biti niz.

Drugo, morate dekodirati JSON prije nego što ga možete koristiti u PHP-u kao niz ili objekt. Za to se koristi json_decode().