试图从对象中获取 属性 个非对象

Trying to get property of non-object, from an object

我正在序列化一个表单,其中包含一个 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");
    }
})

然后,路由调用的方法被触发,这里我通过logging来查看数据:

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 访问这些键以存储它们的值,这导致了错误,即使是一个对象。

我可能遗漏了什么?

在一些帮助和想法的帮助下,我想出了一个解决方案。首先,我按照@JigarShah 的建议修改了 JSON 格式,然后,在控制器中,使用以下代码:

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

    print_r($d->name);
}

一切正常。