如何使用 AXIOS 将 JSON 个对象的数组从 Vue.js 发送到 Laravel
How to send an array of JSON objects to Laravel from Vue.js with AXIOS
因此,我的 Laravel API 端点希望收到类似这样的信息以成功将其添加到数据库:
{
ICAO: 'ABC',
name: 'The name of Airport',
place: 'city',
country: 'country'
}
我做了一个解析器,它接受 .csv 文件并解析它,我想用 axios 发送这样的东西:
[
{
ICAO: 'ABC',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'DEF',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'GHI',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'JKL',
name: 'The name of Airport',
place: 'city',
country: 'country'
}
]
所以我可以用 foreach 迭代这个数组,从而将其中的所有对象添加到 db。
public function import(Request $request)
{
// Do validation
$airports = $request->all();
foreach ($airports as $airport) {
Airport::create($airport)
};
return response('Airports imported', 200);
}
我什至尝试发送一个带有 属性 'data' 的对象,它具有上述 JSON 对象数组的值,然后尝试迭代该属性。
在邮递员中一切正常,但是当尝试用应用程序发送时,它不起作用或者用空行填充数据库。
我也使用 vuex store 所以我发布这个的操作是:
importAirports (payload) {
if (auth.roles('Operative')) {
axios.post(api + '/airports/import?token=' + token, payload, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
.then(function (response) {
console.log(response)
})
.catch(function (error) {
commit('error', error)
console.log(error)
})
}
}
一个机场的基本创建工作正常,其他一切都很好,但这个不行。有什么想法吗?
我认为您的问题可能出在 Vuex 操作中。据我所知,Vuex 操作的第一个参数是 'context' 后跟第二个参数,即有效负载。您的操作参数应如下所示:
importAirports (context, payload) {
// do stuff
}
然后您可以使用解构来访问像 commit
这样的方法,我看到您在 .catch()
块中使用了这些方法。像这样:
importAirports ({ commit }, payload) {
if (auth.roles('Operative')) {
axios.post(api + '/airports/import?token=' + token, payload, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
.then(function (response) {
console.log(response)
})
.catch(function (error) {
commit('error', error)
console.log(error)
})
}
}
您正在 Post
请求中发送 Get
方法。那样 Laravel 让你变得空虚 $request
.
这样试试。
axios.post('your_route', {data: 'json_data_here"}, callback)
因此,我的 Laravel API 端点希望收到类似这样的信息以成功将其添加到数据库:
{
ICAO: 'ABC',
name: 'The name of Airport',
place: 'city',
country: 'country'
}
我做了一个解析器,它接受 .csv 文件并解析它,我想用 axios 发送这样的东西:
[
{
ICAO: 'ABC',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'DEF',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'GHI',
name: 'The name of Airport',
place: 'city',
country: 'country'
},
{
ICAO: 'JKL',
name: 'The name of Airport',
place: 'city',
country: 'country'
}
]
所以我可以用 foreach 迭代这个数组,从而将其中的所有对象添加到 db。
public function import(Request $request)
{
// Do validation
$airports = $request->all();
foreach ($airports as $airport) {
Airport::create($airport)
};
return response('Airports imported', 200);
}
我什至尝试发送一个带有 属性 'data' 的对象,它具有上述 JSON 对象数组的值,然后尝试迭代该属性。
在邮递员中一切正常,但是当尝试用应用程序发送时,它不起作用或者用空行填充数据库。
我也使用 vuex store 所以我发布这个的操作是:
importAirports (payload) {
if (auth.roles('Operative')) {
axios.post(api + '/airports/import?token=' + token, payload, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
.then(function (response) {
console.log(response)
})
.catch(function (error) {
commit('error', error)
console.log(error)
})
}
}
一个机场的基本创建工作正常,其他一切都很好,但这个不行。有什么想法吗?
我认为您的问题可能出在 Vuex 操作中。据我所知,Vuex 操作的第一个参数是 'context' 后跟第二个参数,即有效负载。您的操作参数应如下所示:
importAirports (context, payload) {
// do stuff
}
然后您可以使用解构来访问像 commit
这样的方法,我看到您在 .catch()
块中使用了这些方法。像这样:
importAirports ({ commit }, payload) {
if (auth.roles('Operative')) {
axios.post(api + '/airports/import?token=' + token, payload, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
.then(function (response) {
console.log(response)
})
.catch(function (error) {
commit('error', error)
console.log(error)
})
}
}
您正在 Post
请求中发送 Get
方法。那样 Laravel 让你变得空虚 $request
.
这样试试。
axios.post('your_route', {data: 'json_data_here"}, callback)