Axios post entire from. (Vue.js)

和自甴很熟 提交于 2019-12-14 01:24:50

问题


Is there a way to just post the entire form, instead of having to specify the fields? I thought I had seen it somewhere but can't find it now.

A bit like this in JQuery:

$.ajax({
    data: $("form").serialize(),
    //etc.
});

This is in Vue.js component.

Mick


回答1:


One possible solution is to use v-model with object as mentioned by @MU.

Apart from v-model, you can also use native FormData object, for example when you have dinamically created inputs and you can't/don't want to bind these inputs using v-model:

new Vue({
  el: '#app',
  methods: {
    submit: function () {
      const formData = new FormData(this.$refs['form']); // reference to form element
      const data = {}; // need to convert it before using not with XMLHttpRequest
      for (let [key, val] of formData.entries()) {
        Object.assign(data, { [key]: val })
      }
      console.log(data);
      axios.post('https://jsonplaceholder.typicode.com/posts', data)
        .then(res => console.log(res.request.response))
    }
  }
});
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<div id="app">
  <form ref="form" @submit.prevent="submit">
    <input type="text" name="name">
    <input type="number" name="age">
    <button type="submit">Submit</button>
  </form>
</div>



回答2:


  1. If you are using VueJS you should use v-model for all form fields. https://vuejs.org/v2/guide/forms.html
  2. Create in your data() object called form or something similar and use v-model='form.fieldName'
  3. Post all together as JSON with this.axios.post('url', this.form).then(...


来源:https://stackoverflow.com/questions/44759208/axios-post-entire-from-vue-js

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!