0

对不起英语不好:)

我试图以 json 格式为用 php/python 编写的 restapi 发布表单。如果我使用 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
 )  

Json Post 代码

  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 回答