json数组到php

json数组到php,php,json,Php,Json,我有json格式的数组,但我想用php打印它。我在帖子中写道: [{"cartData":{"id":"dragged_567737","left":"255px","top":"71px"}},{"cartData":{"id":"dragged_757836","left":"43px","top":"73px"}}] 但是,当我在php文件中使用print\r($\u POST)时,它会将空数组打印出来。 这是我的js代码: jQuery('#save_project_data').cl

我有json格式的数组,但我想用php打印它。我在帖子中写道:

[{"cartData":{"id":"dragged_567737","left":"255px","top":"71px"}},{"cartData":{"id":"dragged_757836","left":"43px","top":"73px"}}]
但是,当我在php文件中使用print\r($\u POST)时,它会将空数组打印出来。 这是我的js代码:

jQuery('#save_project_data').click( function() {
            var array=[];
            var numItems = $('.icart').length;

            $(".icart").each(function(index) {
                var cart_id = $(this).attr("id");
                var cart_left = $(this).css("left");
                var cart_top = $(this).css("top");

                var cartData = {  
                   "id" : cart_id,                                
                   "left" : cart_left,
                   "top" : cart_top
                };
                queryStr = { "cartData" : cartData };
                array.push(queryStr);
            });

            var postData = JSON.stringify(array);
           $.ajax({
                   url  : "modules/cart_projects/saveData.php",
                   type : "POST",
                   dataType: 'json',
                   contentType: 'application/json; charset=utf-8',

                   data : postData,//{ 'data': '{"name":"chris"}' }
                   traditional: true,
                   success: function(){
                        alert("OK");
                    } 
               });
            return false;
        });
根据文件:

要发送到服务器的数据。如果尚未转换为字符串,则会将其转换为查询字符串它被附加到GET请求的url中。请参阅processData选项以防止自动处理。对象必须是键/值对。如果value是数组,jQuery将基于传统设置的值(如下所述)使用相同的键序列化多个值

为了安全起见,您最好使用该方法

最后,我建议给
数据
属性一个
对象
。这样,您就可以为post数据设置标识符

Javascript

{
url:'modules/cart_projects/saveData.php',
数据:{
mydata:postData
}
}
PHP

$\u POST['mydata'];
如果需要解码JSON:

json_decode($_POST['mydata']);
根据文件:

要发送到服务器的数据。如果尚未转换为字符串,则会将其转换为查询字符串它被附加到GET请求的url中。请参阅processData选项以防止自动处理。对象必须是键/值对。如果value是数组,jQuery将基于传统设置的值(如下所述)使用相同的键序列化多个值

为了安全起见,您最好使用该方法

最后,我建议给
数据
属性一个
对象
。这样,您就可以为post数据设置标识符

Javascript

{
url:'modules/cart_projects/saveData.php',
数据:{
mydata:postData
}
}
PHP

$\u POST['mydata'];
如果需要解码JSON:

json_decode($_POST['mydata']);

尝试使用json_decode()函数。

尝试使用json_decode()函数。

PHP本机支持使用

PHP
$\u POST
数组是从键值对解释的,因此您需要像下面这样更改ajax调用,因为您的代码发送的是没有键的POST数据

data : { myJson : postData },//{ 'data': '{"name":"chris"}' }
如果您像上面那样更改数据结构,还需要删除
应用程序/json;字符集=utf-8
内容类型

从:

获取JSON编码的字符串并将其转换为PHP变量


PHP本机支持使用解码JSON

PHP
$\u POST
数组是从键值对解释的,因此您需要像下面这样更改ajax调用,因为您的代码发送的是没有键的POST数据

data : { myJson : postData },//{ 'data': '{"name":"chris"}' }
如果您像上面那样更改数据结构,还需要删除
应用程序/json;字符集=utf-8
内容类型

从:

获取JSON编码的字符串并将其转换为PHP变量


如果将原始JSON字符串发送到PHP,则不会填充$\u POST(因为它需要POST请求提交的标准URL编码字符串进行解码)。您可以通过将postData用作对象:{'json':json}来解决此问题,以便在$_POST['json']中获取值,或者通过读取原始响应:

$json_string = file_get_contents('php://input');
$struct = json_decode($json_string, true);

如果将原始JSON字符串发送到PHP,则不会填充$\u POST(因为它需要POST请求提交的标准URL编码字符串进行解码)。您可以通过将postData用作对象:{'json':json}来解决此问题,以便在$_POST['json']中获取值,或者通过读取原始响应:

$json_string = file_get_contents('php://input');
$struct = json_decode($json_string, true);

为什么不按原样传递数据呢?你为什么要把它字符串化?你有哪个版本的php?为什么不按原样传递数据呢?你为什么要把它字符串化?你有哪个版本的php?它会有什么变化?不是答案。“你需要”-实际上没有“需要”,这只是可用的选项之一。“为了安全”-为了远离什么?停止写一些随意的短语)它会改变什么?不是答案。“你需要”-实际上没有“需要”,这只是可用的选项之一。“为了安全”-为了远离什么?别再胡乱写了)@Evaldas Struckus:“这不是工作”不是问题explanation@EvaldasStruckus取出
应用程序/json;charset=utf-8
content-type并在javascript中设置post键(如答案所示)。现在在post中,我得到了这个myJson=%5B%7B%22cartData%22%3A%7B%22id%22%3A%22draugd_790583%22%2C%22left%22%3A%22171px%22%2C%22top%22%3A%22103px%22%7D%5d,看起来正确。PHP将自动解码url编码,然后使用json_解码,如图所示对url编码进行解码JSON@EvaldasStruckus:“这不是工作”不是问题explanation@EvaldasStruckus取出
应用程序/json;charset=utf-8
content-type并在javascript中设置post键(如答案所示)。现在在post中,我得到了这个myJson=%5B%7B%22cartData%22%3A%7B%22id%22%3A%22draugd_790583%22%2C%22left%22%3A%22171px%22%2C%22top%22%3A%22103px%22%7D%5d,看起来正确。PHP将自动解码url编码,然后使用json_decode对json进行解码,如图所示