Reputation: 179
Welcome ! I have a problem with script. When i try to submit form i have an error in VUE developer panel : "TypeError: error.response.data.errors is undefined". I can't figure out where is the problem.I'm fresh in vue and need a little bit help. Thank you very much. I checked twice namespaces and it's still not working. I can't find why data errors are undefined.
Store controller:
public function store(Request $request)
{
$this->validate($request, [
'flight_no' => 'required|max:255',
'fromICAO' => 'required',
]);
$roster = Roster::create([
'flight_no'=> request('flight_no'),
'fromICAO' => request('fromICAO')
]);
return response()->json([
'roster' => $roster,
'message' => 'Success'
], 200);
}
Roster.vue
<template>
<div class="container">
<div class="row">
<div class="col-md-12 " style="margin-top:10px;">
<div class="panel panel-default">
<div class="panel-heading">
<button @click="initAddRoster()" class="btn btn-primary btn-xs pull-right" style="background-color:#bdc911; border:none">
+ Add New Route
</button>
Roster
</div>
<div class="panel-body">
</div>
</div>
</div>
</div>
<div class="modal fade" tabindex="-1" role="dialog" id="add_roster_model">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">×</span></button>
<h4 class="modal-title">Add New Route</h4>
</div>
<div class="modal-body">
<div class="alert alert-danger" v-if="errors.length > 0">
<ul>
<li v-for="error in errors">{{ error }}</li>
</ul>
</div>
<div class="form-group">
<label for="flight_no">Flight number:</label>
<input type="text" name="flight_no" id="flight_no" placeholder="Flight number" class="form-control"
v-model="roster.flight_no">
</div>
<div class="form-group">
<label for="fromICAO">From ICAO:</label>
<textarea name="fromICAO" id="fromICAO" cols="30" rows="5" class="form-control"
placeholder="from ICAO" v-model="roster.fromICAO"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" @click="createRoster" class="btn btn-primary">Submit</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</div>
</template>
<script>
export default {
data(){
return {
roster: {
flight_no: '',
fromICAO: ''
},
errors: []
}
},
methods: {
initAddRoster()
{
this.errors = [];
$("#add_roster_model").modal("show");
},
createRoster()
{
axios.post('/roster', {
flight_no: this.roster.flight_no,
fromICAO: this.roster.fromICAO,
})
.then(response => {
this.reset();
$("#add_roster_model").modal("hide");
})
.catch(error => {
this.errors = [];
if (error.response.data.errors.flight_no) {
this.errors.push(error.response.data.errors.flight_no[0]);
}
if (error.response.data.errors.fromICAO) {
this.errors.push(error.response.data.errors.fromICAO[0]);
}
});
},
reset()
{
this.roster.flight_no = '';
this.roster.fromICAO = '';
},
}
}
</script>
Upvotes: 0
Views: 3425
Reputation: 9693
yes error response was 404 so there is not error
attribute in response so you can not add it to if condition.
so to next time if you want to debug it you can use console
.catch(error => {
this.errors = [];
// you can debug it
console.log(error);
});
example
// this will come from the ajax
var error = {
data :{
'error' : 'some data we can see it in console'
}
}
console.log(error);
Upvotes: 2
Reputation: 179
Answer:
Problem was with the incorrect route path:
axios.post('/roster'
Upvotes: 0