将数据从Ajax发送到Laravel控制器。 Vuejs

时间:2019-02-03 21:07:09

标签: javascript vue.js axios

我有一阵子我不懂,因为我是开发新手。 我正在从多步骤表单收集数据,并希望在我的控件上的一个ajax请求下处理所有表单输入。我成功完成了此操作,但是如果它是ajax的数组,则无法弄清楚如何使用$request中的数据。 如果可以使用$request->input('name'),我可以使用它,但是由于我的数据格式,我需要使用$request->input('firstGrant.issue_date')之类的东西。请提示我哪种挖掘方式。

我的方法:

submitCompany() {
 axios.post('/onboarding', {
    name: this.step1.name,
    type: this.step1.type,
    shares_amount: this.step2.shares_amount,
    par_value: this.step2.par_value,
    firstGrant: {
        issue_date: this.step3.firstGrant.issue_date,
        certificate: this.step3.firstGrant.certificate,
        share_price: this.step3.firstGrant.share_price,
        shares_amount: this.step3.firstGrant.shares_amount
    }

})
.then(function (response) {
    console.log(response);
    alert('Information saved!');
})
.catch(function (error) {
    console.log(error);
    alert('Wrong!');
});
}

我的控制器:

public function store(Request $request)
{
    $userId = Auth::user()->id;
    $issueDate = $request->input('firstGrant.issue_date'); //How to do it right way?
    $certificate = $request->input('firstGrant.certificate');//How to do it right way? 
    $sharePrice = $request->input('firstGrant.share_price');//How to do it right way?
    $sharesAmount = $request->input('firstGrant.shares_amount');//How to do it right way?

    $equityGrant = EquityGrant::create([
        'user_id' => $userId,
        'share_id' => 91,
        'vesting' => 0,
        'status' => 'active',
        'issue_date' => $issueDate,
        'certificate' => $certificate,
        'share_price' => $sharePrice,
        'shares_amount' => $sharesAmount,
    ]); }

1 个答案:

答案 0 :(得分:1)

您可能必须将axios配置为与每个请求一起发送标头,这会使Laravel将请求识别为XHR。完成后,$request->input('x.y')语句应该可以工作。

Object.assign(axios.defaults.headers, {
    'X-Requested-With': 'XMLHttpRequest',
});

如果这仍然不起作用,您可能还想检查axios是否在请求标头中正确includes the CSRF-token