Laravel 和 axios 提交后清除表单

Posted

技术标签:

【中文标题】Laravel 和 axios 提交后清除表单【英文标题】:Laravel and axios clear Form after submit 【发布时间】:2018-01-23 03:25:56 【问题描述】:

在我的 Laravel 应用程序中,我使用 vue 和 axios 提交了一个表单。 提交后我想清除表单中的输入字段,但它不起作用。

HTML:

<form method="post" enctype="multipart/form-data" v-on:submit.prevent="addPost">
  <textarea id="post_area" v-model="content"></textarea>
  .....
</form>

JS:

const app = new Vue(
el: '#app',
data: 
  content: '',
  posts: []
,

......

.then(function (response) 
   if(response.status===200) 
      //reload posts
      app.posts = response.data;
      this.content = '';
   
)

它只是不会清除输入字段。

【问题讨论】:

【参考方案1】:

this 没有指向你的 Promise 成功回调中的 vue 实例

改用箭头函数。箭头函数按词法绑定this的值

const app = new Vue(
el: '#app',
data: 
  content: '',
  posts: []
,

......

.then( (response) => 
   if(response.status===200) 
      //reload posts
      app.posts = response.data;
      this.content = '';
   
) 

或者创建一个指向正确 vue 实例的局部变量并使用它来访问您的数据属性,如下所示:

methods:
    addPost()
        var vm = this;

        //.....axios post
         .then( (response) => 
            if(response.status===200) 
                //reload posts
                app.posts = response.data;
                vm.content = '';
            
        ) 

    

【讨论】:

谢谢!那很简单。

以上是关于Laravel 和 axios 提交后清除表单的主要内容,如果未能解决你的问题,请参考以下文章

axios提交表单后发送的请求过多

Laravel 重新提交表单验证仍然显示旧输入值

axios异步提交表单数据的不同形式

提交后显示 toast 和清除表单

带有 axios 和 vue 的 laravel 5.8 中的 CSRF

使用jquery提交后清除表单[重复]