目前,我正试图从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
我想使用->
运算符。我不明白。为什么我无法使用->
运算符访问对象中的值?
答案 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'];