根据其接口数据——前端动态创建表单并提交其数据

该博客探讨了前端如何根据不同类型的交互调用后端接口。当点击应用卡片时,后端会返回不同类型的响应,一种是重定向URL,另一种是动态创建并提交表单数据到指定URL。博客详细描述了利用Vue.js处理这两种情况的实现过程,包括错误处理和数据提交机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:
每种类型不一样,点击其调后端接口返回的数据就不一样,总体一种分为两种:一种是会直接返回即将要跳转的路径,另外一种就是需要根据后端返回的数据,动态的创建form表单及input,并将form表单数据提交至指定的url。

<div v-for="application in Applications" :key="application.index">
  <v-card
    class="float-left application-item ma-3"
    elevation="0"
    @click="toCurUrl(application)"
  >
    <v-card-text
      class="d-flex flex-column align-center text-center pt-10"
    >
      <v-img
        :src="require('@/assets/imgs/' + application.type + '.png')"
        max-width="40"
      ></v-img>
      <a class="mt-4 text-decoration-none black--text">
        {{ application.name }}
      </a>
    </v-card-text>
  </v-card>
</div>

expert default{
	data(){
		return {
			applications: []
		}
	},
	methods:{
		toCurUrl(item) {
	      this.$http
	        .post(`/api/${item.id}/aaa`)
	        .delegateTo(api_request)
	        .then(data => {
	          if (data.type === "REDIRECT_URL") {
	            location.href = data.action;
	          } else {
	            let { action, method, inputs } = data.action;
	            let form = document.createElement("form");
	            form.action = action;
	            form.method = method;
	
	            for (let i = 0; i < inputs.length; i++) {
	              let input = document.createElement("input");
	              input.name = Object.keys(inputs[i])[0];
	              input.value = Object.values(inputs[i])[0];
	              form.appendChild(input);
	            }
	            document.body.appendChild(form).submit();
	          }
	        })
	        .catch(({ code, message }) => {
	          throw `获取数据失败:${this.$t("api." + code)}, 额外信息: ${this.$t(
	            "api." + typeof message === "string"
	              ? message
	              : JSON.stringify(message)
	          )}`;
	        })
	        .delegateTo(this.$snackbar.delegateError);
	    }
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值