vue ax ios post как отправить массив formdata? - PullRequest
1 голос
/ 28 января 2020

Мне нужно отправить данные ARRAY, потому что бэкэнд может распознавать только такие данные

Ожидаемый эффект:

&row[weigh]=0
&row[status]=normal

код:

row:{
  weigh: 0,
  status: 'normal'
}

фактический эффект:

row:{
  weigh: 0,
  status: 'normal'
}

Когда я отправляю данные, консоль отображает JSON вместо массива, но серверная часть не может его получить

Что мне нужно, чтобы соответствовать результатам из формы представления ниже

<form  method="POST" >
  <input name="row[a]" type="text" value="">
  <input name="row[b]" type="text" value="">

Ответы [ 4 ]

0 голосов
/ 28 января 2020

Попробуйте этот код.

let row = {
  weigh: 0,
  status: 'normal'
};

let finalArr = [];

Object.keys(row).forEach((key) => {
    finalArr.push(`row[${key}]=` + row[key]);
});
console.log(finalArr.join('&'));
// outputs: row[weigh]=0&row[status]=normal
0 голосов
/ 28 января 2020

Ваш код также должен передавать массив точно так же, как это.

data = [
  {weigh: 0},
  {status: 'normal'}
]

тогда, когда вы отправляете его на сервер, например, используя ax ios, ваш код должен выглядеть следующим образом

axios.post('/api endpoint', {row:data})
    .then(response => {
     // response here
});
0 голосов
/ 28 января 2020

ок

const formData = new FormData()
  Object.keys(this.form).forEach(e => {
  formData.append(`row[${e}]`, this.form[e])
})
0 голосов
/ 28 января 2020
public register(rowObject: RowObject): AxiosPromise<any> {
    return axios.post('http://localhost/api/register', rowObject);
}

Таким образом, вы можете передавать данные методом Post.

rowObject =  {
    weigh: 0,
    status: 'normal'
    }
...