试图从一个对象获取非对象的属性

时间:2018-01-29 05:51:13

标签: php laravel object vue.js

我正在序列化一个包含一个select输入的表单,其中一个对象作为value通过Ajax发送到后端:

<select name="language" class="form-control">
    <option value="" selected disabled>Choose a Language</option>
    <option value="{ locale: 'AF', name: 'Afrikaans' }">Afrikaans</option>
    ...
</select>

然后使用VueJS:

通过Ajax发送数据
$.post("/ajax/admin/languages", $("#addLanguageForm").serialize()).done((data) => {
    if (data.success) {
        toastr.success("A new language has been added");
    } else {
        toastr.error("An error occurred");
    }
})

然后,触发路由调用的方法,在这里我通过记录来检查数据:

public function store(Request $r)
{
    $x = $r->input('language');

    Log::info($x);
}

将显示以下内容:

  

[2018-01-29 05:52:18] local.INFO:{locale:'AF',name:'Afrikaans'}

然后,我尝试访问这些密钥,以便按$x->locale$x->name存储其值,这会导致错误,甚至是对象。

我能错过什么?

1 个答案:

答案 0 :(得分:0)

通过一些帮助和想法,我想出了一个解决方案。首先,我将JSON格式修改为@JigarShah建议,然后在Controller中修改以下代码:

public function store(Request $r)
{
    $x = $r->input('language');
    $d = json_decode($x);

    print_r($d->name);
}

一切都好。