6

JSONオブジェクトをAJAXリクエストからサーバーに送信しようとしています。

私は次のようにJQueryでこれを行っています:

  $.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は、サーバー上の次のファイルを指します。

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

しかし、Firebugでは正しいデータがサーバーに送信されたことがわかりますが、POST変数は空のようです。

FirebugはJSONオブジェクトを見ることができます

各リクエストが送信された後、未定義のエラーでajaxエラー関数が呼び出されます(サーバーからの応答がなかったためだと思いますか?それともわかりませんか?)

4

1 に答える 1

6

POSTにはキーと値のペアが必要ですが、キーなしで1つの値(JSON文字列)を送信するだけです。配列である必要があります。

次に、JSONを配列またはオブジェクトとしてPHPで使用する前に、JSONをデコードする必要があります。json_decode()そのために使用されます。

于 2012-07-19T23:35:03.677 に答える