0

英語が下手でごめんなさい:)

php/pythonで書かれたrestapiのフォームをjson形式で投稿しようとしていました。jsonを使用すると、投稿されたデータにアクセスできません。以下のシナリオを参照してください

json以外の投稿のコード

jQuery(document).ready(function($) {
     $.post(  
        "http://localhost:8000/api/v1/entry/?format=json",  
        {
        "body": "This will prbbly be my lst edited  post.",
        "pub_date": "2011-05-22T00:46:38",
        "slug": "another-post",
        "title": "Another Post",
        "username":"admin",
        "password":"admin"


        },  
        function(responseText){  
            $("#result").html(responseText);  
        },  
        "html"  
    );
  }) 

サーバーの応答

 Array
 (
 [body] => This will prbbly be my lst edited  post.
 [pub_date] => 2011-05-22T00:46:38
 [slug] => another-post
 [title] => Another Post
 [username] => admin
 [password] => admin
 )  

JsonPostのコード

  jQuery(document).ready(function($) {
   var data = JSON.stringify({
    "body": "This will prbbly be my lst edited  post.",
    "pub_date": "2011-05-22T00:46:38",
    "slug": "another-post",
    "title": "Another Post",
"username":"admin",
"password":"admin"


});

 $.post(  
        "testpost.php",  
        data,  
        function(responseText){  
            $("#result").html(responseText);  
        },  
        "html"  
    );
  }) 

サーバーの応答

Array
(
)
4

2 に答える 2

3

さて、あなたはどのパラメータにも値を割り当てていないので、PHPは$_POST配列にデータを取り込むことができません。

たとえば、json次のようなパラメータに割り当てます。

$.post("testpost.php", {json: data}, ...);

次に、次の方法でアクセスできるようになります。

$_POST['json'];

または、PECLを使用している場合は、http_get_request_body [docs]を呼び出してデータを取得できます。

于 2012-05-14T10:34:51.430 に答える
1

これは通常の応答です。データはキーと値のペアの配列/オブジェクト、またはkey = value&key2 = value2のような適切にエンコードされたクエリ文字列である必要があります...サーバー側で行ったように投稿されたデータを取得する場合は、次のように入力します。

$jsonDatas = file_get_contents('php://input')

あなたがあなたのjsですることができるより簡単な方法:

data = { json: JSON.stringify({...}) }

そして、$ _POST['json']サーバーサイドで結果を取得します。

必要に応じて、私のクラスをチェックして、phpサーバーサイドでjsonサービスを操作するのを支援できます:http://projects.jgotti.net/blog/15

于 2012-05-14T10:39:15.110 に答える