javascript - Cum să primești un obiect JSON în PHP?


Încerc să trimit un obiect JSON dintr-o cerere AJAX către serverul meu.

Fac asta cu JQuery în felul următor:

  $.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-ul este îndreptat către acest fișier de pe server:

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

Dar variabila POST pare să fie goală, chiar dacă în Firebug pot vedea că datele corecte au fost trimise către server:

După ce fiecare cerere este trimisă, funcția de eroare ajax este apelată, cu o eroare nedefinită (presupun că pentru că nu a existat niciun răspuns de la server? Sau nu știu?)

Răspuns #1

POST necesită perechi cheie-valoare, dar tu trimiți doar o valoare (un șir JSON) fără o cheie. Trebuie să fie un tablou.

În al doilea rând, trebuie să decodezi JSON-ul înainte să îl poți folosi în PHP ca un array sau obiect. json_decode() este folosit pentru asta.