2017-12-31 171 views
0

Derzeit versuche ich weg von mySQLi prozeduralen zu objektorientierten Stil. Also habe ich ein Objekt über die Funktion Jquery Post() an eine PHP-Datei übergeben. Unten:Zugriff auf ein Objekt in PHP

JS-Datei

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); 
     }); 

Auf der PHP Seite: Ich habe dies:

$employerdata = $_POST['employerdata']; 

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

ich das Objekt in der oben zugreifen können, aber ich kann nicht scheinen mit dem Operator -> auf die Werte im Objekt zuzugreifen.

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

Die $ zugegriffen Variable, var_dump, das Echo des Objekts jeder Ausbeute dieser Fehler, den letzten zwei Aussagen haben eine NULL am Ende:

Trying to get property of non-object 

Ich mag würde den -> Operator verwenden . Ich verstehe es nicht. Warum kann ich mit dem Operator -> nicht auf die Werte im Objekt zugreifen?

+0

'json_decode ($ employerdata, true);' 'mit true' als zweitem Parameter, gibt json_decode einen Array – vnt

Antwort

0

true als zweites Argument zu json_decode() bedeutet "zurückgegebene Objekte werden in assoziative Arrays umgewandelt". Daher erhalten Sie Array, kein Objekt.

Sie müssen entweder auf false zu zweiten Argumente übergeben Objekt oder Zugriffseigenschaften mit Array-Syntax zu erhalten: $accessed = $data['newemployeremail'];

0

Sie die Zuordnung der Werte als assoziatives Array

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

, so dass Sie ein Array haben und nicht ein Objekt

dann versuchen, die json dekodieren, ohne wahr zB zuweisen:

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