500 Internal Server Error - when assigning data from json_decode to variables

时间:2015-06-25 10:04:39

标签: php

I am sending some form data form an AngularJs app to my php script. So far I've been unable to get Angular to send a "regular" POST request (it sends JSON data instead), so I figured I'd just decode it with php, then use the results

I am now having trouble referencing the results. I get "NetworkError: 500 Internal Server Error upon sending data to my script.

Here's my php code:

<?php
$data = file_get_contents("php://input");

$data = json_decode($data);
var_dump($data);

$fromName = $data["fromName"];
$fromEmail = $data["fromEmail"];
$msg = $data["inputMsg"];

The var_dump($data) returns this:

object(stdClass)#1 (3) {
  ["fromName"]=>
  string(4) "djea"
  ["fromEmail"]=>
  string(13) "djea@djea.com"
  ["inputMsg"]=>
  string(7) "testMsg"
}

can someone please point out what I'm doing wrong? Thanks

3 个答案:

答案 0 :(得分:2)

true作为第二个变量传递给json_decode以获取关联数组。

$data = json_decode($data, true);

$fromName = $data["fromName"];
$fromEmail = $data["fromEmail"];
$msg = $data["inputMsg"];
如果您未将第二个变量作为json_decode传递,则

true会返回对象。

$data = json_decode($data);

$fromName = $data->fromName;
$fromEmail = $data->fromEmail;
$msg = $data->inputMsg;

答案 1 :(得分:0)

因为它是一个对象而不是一个数组,所以你需要访问这样的元素:

$fromName = $data->fromName;
$fromEmail = $data->fromEmail;
$msg = $data->inputMsg;

答案 2 :(得分:0)

请勿将object视为an array

$fromName = $data->fromName;
$fromEmail = $data->fromEmail;
$msg = $data->inputMsg;