如何在PHP中接收和解码JSON字符串?

时间:2012-02-28 08:56:33

标签: php jquery ajax json

我已经通过jquery中的ajax传递了json字符串。我的JSON文件有复选框和列表值。

 var jsonstr = JSON.stringify(result);                  

此处'jsonstr'是选定的表单元素。

    function runAjax(jsonstr)
    { 
              type:"POST",
              url: "ajax.php",
              data: 'json=' +jsonstr,
              dataType: 'json',
              headers: {
                  'Content-Type': 'application/json',

              success: function(){
                  alert('Test results submitted!');

              },

    };
    return false;

在php中,我试图像这样接收JSON字符串,但它输出的结果类似于“null”。

$data= $_POST['json'];
  //decode Json string to PHP object
  $phpobj = json_decode($data,true);
       print_r($data);
       $phpobj = json_encode($data,true);

我正在做什么,在解码部分应该是什么?有人可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

如果你想把它作为json字符串发送,请像这样给出

data: {json:jsonstr}

所以它应该是

$.ajax({
                type : 'POST',
                url : 'sample2.php',
                data: {json:jsonstr},
                success : function(data){
                    alert(data);
                },
                error : function(XMLHttpRequest, textStatus, errorThrown) {
                    alert("error");
                }
            });

它应该适合你。

实际上没有必要将对象转换为json。您可以直接在$.ajax中提供。

 var data = {name:"Jack", age:12, place:"CA", marks:70};

 $.ajax({
        type : 'POST',
        url : 'post.php',
        data: data,
        success : function(data){

        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {

        }
    });

在php中你可以像

一样阅读
 $_POST['name']
 $_POST['age']
 $_POST['place']
 $_POST['marks']

答案 1 :(得分:0)

请检查$ _POST ['json']的值。它应该包含类似{“a”:“aaa”,“b”:“bbbb”}的内容。

检查“使用json_decode()的示例#3常见错误”这里http://php.net/manual/en/function.json-decode.php

答案 2 :(得分:0)

您可以尝试以下操作:

Javascript 更改

<德尔> var jsonstr = JSON.stringify(result);

<德尔> data: 'json=' +jsonstr,

到一个简单的

data: JSON.stringify({json: result}),

PHP 中读取数据而不是这种方式

<德尔> $data= $_POST['json'];

在这一个

$data=json_decode(stripslashes(file_get_contents('php://input')));

完成后,以这种方式访问​​您的数据:

$data->{'variable-name'}

答案 3 :(得分:-2)

你很幸运,我理解这个问题

var jsonObject = eval("(" + jsonFormat + ")");