无法从Laravel

时间:2016-07-17 06:18:10

标签: php angularjs json laravel laravel-5.1

我正在尝试从Angular应用程序的请求中访问对象属性。我正在使用Laravel 5.1

角:

console.log('getQuestionAnswers', params);
return $http({
    method: 'GET',
    url: url + ver + '/questions/checkMany',
    params: {
        'questions[]' : params
    },
    headers: {
        'Content-Type': 'application/json',
        Authorization: 'Bearer ' + $rootScope.access_token
    },
    cache: true
});

params的Console.log:

enter image description here

Laravel:

public function getAnswers(Request $request)
{
    $input = $request->all();

    $question_objs = $input['questions'];

    foreach ($question_objs as $question_answer_object) {
        return $question_answer_object;

对Angular的回应:return $question_objs;

enter image description here

对Angular的回应:return $question_answer_object;

enter image description here

到目前为止看起来很好!

但是如果我尝试访问laravel中的属性,例如question_id:

return $question_answer_object['question_id'];

我收到错误:

  

"非法字符串偏移' question_id'

Laravel已经解析了JSON,

    // From Illuminate/Http/Request.php all() method:

    if (! isset($this->json)) {
        $this->json = new ParameterBag((array) json_decode($this->getContent(), true));
    }

当我退回时,我可以看到它是一个物体。为什么我无法访问这些属性?我没有运气就试过json_decode

使用JSON解码:

$test = json_decode($question_answer_object, true);
return $test['question_id'];

这似乎有效。但为什么呢?

访问对象上的属性:

return $question_answer_object->question_id;

给出以下错误:

  

"试图获得非对象的属性"

2 个答案:

答案 0 :(得分:1)

$question_answer_object['question_id']变量是一个包含JSON编码数据的字符串;要访问它,您需要先解码它:

$decoded= json_decode($question_answer_object['question_id'], true);
return $decoded['question_id'];

如果您未将请求作为application / json发送,请使用$request->json()。 您可以获得有关此问题的一些信息 here

答案 1 :(得分:0)

返回的问题是一个对象,而不是一个数组。您必须使用->

访问它
return $question_answer_object->question_id;