使用axios与Vue和Laravel的post请求



我试图看到Laravel + Vue,但我在vista方面有一个问题。如何通过axios正确发送数据?看我是怎么做的。

<button onClick="addVote(question.id)">Vote</button>
data() {
return {
questions:[],
percentages:[],
vote:''
}
},
methods: {
getQuestions(){
axios.get('/questionlist')
.then((response)=>{
this.questions = response.data.question
})
},
getPercentages(){
axios.get('/getpercentage')
.then((response)=>{
this.percentages = response.data.percentage
})
},
addVote(id) {
axios.post(`/vote/${id}`, data);
}
},
created() {
this.getQuestions(),
this.getPercentages(),
this.addVote()
}

这些是接收数据和发送数据的方法。最后一个是投票方法,我想用它向服务器发送请求,并能够在每次投票中添加一个+。

这也是控制器

public function vote($id) {
$question = Question::find($id);
if(Auth::user()->votes == 0) {
$question->increment('votes', 1);
$question->increment('totalvotes', 1);
Auth::user()->update([
'votes' => '1'
]);
Alert::success("Success", 'Your vote has been added');
}
return response()->json($question);
}
Route::POST('/vote/{id}',          'QuestionController@vote');

我的问题是,在这些情况下,我做错了什么?

不需要在URL中添加参数,因为它是POST请求。你应该在Laravel中使用API路由(API .php),并可以这样构建它

Route::POST('/vote', 'QuestionController@vote');

因为你把它放在API .php中作为API路由,所以它的前缀是/API。所以你的axios调用应该是这样的:

addVote(id) {
axios.post(`/api/vote`, {id: id});
}

现在在QuestionController的投票方法中看起来像这样:

public function vote(Request $request)
{
dd($request);
}

您将看到请求数据的转储,并决定如何处理它。

相关内容

  • 没有找到相关文章

最新更新