0

残念ながら、別のjson関連の質問...

次のjsonを検討してください

[{"details":{
"forename":"Barack",
"surname":"Obama",
"company":"government",
"email":"bigcheese@whitehouse.com",
"files": [{
      "title":"file1","url":"somefile.pdf"
       },
       {
       "title":"file2",
       "url":"somefile.pdf"
       }]
}
}]

このデータをサーバー上の php スクリプトに送信してから、サーバー上でデータを操作する必要がありますが、方法がわかりません。

jquery.ajax経由で送信していますが、正常に送信されており(エラーメッセージはありません)、コードは次のとおりです。(newJson は、上記とまったく同じように作成した json オブジェクトです)

$.ajax({
type: "POST",
url: "test.php",
dataType: 'json',
data: newJson,
success: function(msg) 
    {
    alert(msg);
    },
error: function(jqXHR, textStatus) 
    {
    alert(textStatus);
    }
});

したがって、これまでのphpスクリプトでは、成功アラートに表示される文字列としてコンテンツをエコーバックしたいだけです

<?php
header('Access-Control-Allow-Origin: *'); 
echo $_POST;
?>

しかし、それは私に解析エラーを与えるだけです..それで、素晴らしい人々のアイデアはありますか?

4

3 に答える 3

2

を使用して php でデータを受信するには、キーと値のペアが必要$_POST[key]です。オブジェクトへの構造が既にあるため、配列をそのまま送信することは最善の方法ではありません

内側のオブジェクトを 1 つだけ送信しているため、外側の配列のラップを解除します。

次に、オブジェクトは次のようになります

{"details":{
"forename":"Barack",
"surname":"Obama",
"company":"government",
"email":"bigcheese@whitehouse.com",
"files": [{
      "title":"file1","url":"somefile.pdf"
       },
       {
       "title":"file2",
       "url":"somefile.pdf"
       }]
}
}

php では$_POST['details']. JSON に変換せず、オブジェクト全体を$.ajax dataプロパティに渡すだけです。

ajaxから取得した場合parserror、受信側にあり、phpから500エラーを取得するか、jsonが期待どおりに返されないように聞こえますdataType

于 2013-11-10T05:45:10.367 に答える
1

まず、元の JSON 文字列の形式が間違っています。試す

{
  "details":{
    "forename":"Barack",
    "surname":"Obama",
    "company":"government",
    "email":"bigcheese@whitehouse.com",
    "files": [
      { "title":"file1","url":"somefile.pdf" },
      { "title":"file2","url":"somefile.pdf"}
    ]
  }
}

次に、PHP に送信されたデータは既に配列に解析されていますが、JSON にはなっていません。エコーするには、json_encode を使用して配列を JSON 文字列に戻す必要があります

echo json_encode($_POST);
exit;
于 2013-11-10T05:57:25.387 に答える