1

私は現在JSONの初心者であり、JSONオブジェクトをサーバー側のphpスクリプトに送信するために使用するデータ形式を以下に示すと非常に便利だと思います。

    // CREATE JSON OBJECT
 var EmailEntity = { "MailMembers":memberecipients , "email":"me@mail.com" } ;

               // send to php server script
        $.ajax({
        type: "POST",
        url: "engine/send-mail.php",
        dataType: "JSON",
        data: {JsonEmailEntity: JSON.stringify(EmailEntity)},
        success: function(Databack){
        alert(Databack);
         }
            });

次に、サーバー側(PHP)

           // get json element and extract contents
           $Json = $_POST['JsonEmailEntity'];
           $EmailEntities = json_decode($Json,true);

           $email = $EmailEntities['email'];

           echo $email;

問題は、Firebugでチェックした場合でも、Javascriptが戻り値を警告しないことです。これは、応答が実際に送信されたが警告されなかったことを示しています。Javascriptエラーがどこにあるのか知りたい

4

5 に答える 5

0

dataType呼び出し時のプロパティは、サーバーに送信されるデータのタイプではなく、サーバーによって返さjQuery.ajax()れるデータのタイプです。

dataType (デフォルト: Intelligent Guess (xml、json、script、または html))

タイプ: 文字列

サーバーから返されることを期待しているデータのタイプ。...

jQuery AJAX 呼び出しは、それ自体が JSON である応答を期待していますが、文字列を出力しているだけです。jQuery は暗黙的にそれを JSON として解析しようとしますが失敗し、その結果、エラー コールバックが実行されます。

于 2013-02-07T12:46:03.837 に答える
0

これを変える:

echo $email;

これに:

echo json_encode($email);

そして、それはうまくいくはずです。現時点では、データをエコーし​​ているだけですが、JSON 形式ではありません。

添加:

今後の参考のために、これを行うこともできます。

$email['email'] = $EmailEntities['email']; //or "some@email.com";
$email['username'] = "some_user";

echo json_encode($email);

そしてJavascriptで:

success: function(Databack){
    alert("Your username is " + Databack.username + " and your email is " + Databack.email);
}
于 2013-02-07T12:47:53.347 に答える
0

私はそれがこの行に関連している可能性があると疑っています

{JsonEmailEntity: JSON.stringify(EmailEntity)},

その変数を文字列化する必要はありません。単に渡すだけで{ JsonEmailEntity: JsonEmailEntity }、jQuery はそれに応じて変換します。

そうは言っても、サーバー側でデコードしているので、エラーがそれに関連しているかどうかはわかりません。

Firebug で、コンソールタブに移動してリクエストをクリックすると、そこからParamsタブをクリックすると、サーバーに送信されている内容を確認できます。

于 2013-02-07T12:49:09.377 に答える
0

変化する:

echo $email;

に:

echo json_encode($email);
于 2013-02-07T12:45:58.230 に答える
0

JavaScript ajax コードを変更します。

   // CREATE JSON OBJECT
       var EmailEntity = { "MailMembers":memberecipients , "email":"me@mail.com" } ;

   // send to php server script
        $.ajax({
        type: "POST",
        url: "engine/send-mail.php",
        data: {JsonEmailEntity: JSON.stringify(EmailEntity)},
        success: function(Databack){
        alert(Databack);
      }
    });

dataType を JSON として指定している場合。戻り値の型が json の場合、成功関数が実行されます。

または、以下のように PHP コードを変更します。

変化する:

echo $email;

に:

echo json_encode($email);
于 2013-02-07T12:51:56.877 に答える