访问php

时间:2017-12-31 17:23:37

标签: php jquery json object mysqli

目前,我正试图从mySQLi程序转向面向对象的风格。所以,我通过Jquery Post()函数将一个对象传递给了一个php文件。  下面:

JS档案

var newemployer = {
            newemployeremail:newemployeremail,
            newcompanyname: newcompanyname,
            secondpassword:secondpassword,
        };
    var employerdata = JSON.stringify(newemployer);
    console.log("in jquery: " + employerdata);
        $.post('api/employerprocess.php', {employerdata:employerdata}, function(data){
            console.log(data);
        });

PHP 方面:我有这个:

$employerdata = $_POST['employerdata'];

$data = json_decode($employerdata, true);
print_r($data['newemployeremail']);

我可以访问上面的对象,但我似乎无法使用->运算符访问对象中的值。

$accessed = $data->newemployeremail;
var_dump($data->newemployeremail);
echo $data->newemployeremail;
echo $accessed;
echo 'Hi';

$ visited变量var_dump,每个对象的回显都会产生这个错误,最后两个语句最后都是NULL:

Trying to get property of non-object

我想使用->运算符。我不明白。为什么我无法使用->运算符访问对象中的值?

2 个答案:

答案 0 :(得分:0)

您将值指定为关联数组

$data = json_decode($employerdata, true); 
// the true param in json_decode mean that teh result is converted  in associative array  
echo $data['newemployeremail'];

所以你有一个数组而不是一个对象

然后尝试分配json解码而不是true,例如:

$data = json_decode($employerdata);
echo $data->newemployeremail; 

答案 1 :(得分:0)

true作为json_decode()的第二个参数意味着"返回的对象将被转换为关联数组"。因此,您正在接收数组,而不是对象。

您需要将false传递给第二个参数以使用数组语法接收对象或访问属性:$accessed = $data['newemployeremail'];