json_decode()无法正常工作

时间:2013-12-16 09:57:02

标签: php jquery json

这里我使用的是简单的html + jquery + ajax文件 ajax代码在这里

var email = "am3042208007@gmail.com";
var username = "ankur_07";
var password = "pass07";
var phone_no = "7676715797";
var datastring = {
    "email": email,
    "username": username,
    "password": password,
    "phone_no": phone_no
};

            $.ajax({ 
                type: "POST",
                url: "../test/testreg.php",
                data: {datastring : JSON.stringify(datastring)}, //with the page number as a parameter
                dataType: 'html', //expect html to be returned
                async: false,
                success: function (data) {
                    alert(data);
                    /*if(data=="hello"){
                        message = "Mail Sent Successfully";
                    } else {
                        message = "Oops, mail doesn't send.!!!";
                    }
                    alert(message);*/
                }
            });
            return false;

我从这个文件和ant发送json以获取另一个testreg.php文件 但它没有解码json在echo中使用下面的行显示 {\"email\":\"am3042208007@gmail.com\",\"username\":\"ankur_07\",\"password\":\"pass07\",\"phone_no\":\"7676715797\"}

if(isset($_POST['datastring']))
{
           $data = $_POST['datastring'];
           $data = json_decode($data);

           print_r($data);
   }

请帮我解决这个问题..

3 个答案:

答案 0 :(得分:2)

替换

data: {datastring : JSON.stringify(datastring)},

通过

data: {datastring : datastring},

说明:

您没有发送JSON。您发送转义字符串(删除了JSON格式),因为您使用JSON.stringify

答案 1 :(得分:0)

你不期望结果成为php关联数组吗?你不忘记在json_decode函数中提供第二个参数(true)吗?因为如果你这样做,json_decode会将结果作为对象返回。

答案 2 :(得分:-1)

您必须从帖子数据中删除斜杠\并解码json。

请尝试使用此

$data = json_decode(stripslashes($data), true);

注意:请确保在这种情况下stripslashes()也会移除您的转义序列。