详细问题描述
业务需要做h5 端的支付宝支付, 常规流程, 提交后端返回的form表单, 因此尝试使用如下方法, 但均无效:
报错大多是 Cannot read property 'submit' of undefined
<template>
<!-- #ifdef H5 -->
<form ref="payForm" id="payForm" :action="action" style="display: none" method="post" >
<input type="hidden" v-for="(v,i) in fields" :key="i" :name="v.name" :value="v.value">
<input type="hidden" name="return_url" :value="_return_url">
</form>
<!-- #endif -->
</template>
document.forms[0].submit() // 尝试写法1
new FormData(this.$refs['payForm'].getAll()) // 尝试写法2,
new FormData(this.$refs['payForm'].$el.getAll()) // 尝试写法3,
uni.createSelectorQuery().in(this).select("#payForm").submit // 尝试4
this.$refs['payForm'].submit() // 5
this.$refs['payForm'].$el.submit() // 6
IDE运行环境说明
[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
hbuilderx 2.4.6.20191210
[windows版本号]
10
uni-app运行环境说明
[运行端是h5或app或某个小程序?] h5
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试] 未知
[编译模式是老模板模式还是新的自定义组件模式?] 自定义组件
UchihaSasuke (作者)
我没有绑定@submit,是直接获取dom,触发其submit事件, 另外, 请问这个业务可以使用ajax提交吗?如果可以, 应该怎么做
2019-12-24 16:33
DCloud_uniCloud_WYQ
回复 UchihaSasuke: 我不太清楚支付宝H5支付能不能ajax提交。uniapp的form是不对应真正的form标签的,你可以通过操作dom的方式插入一个form然后让插入的form执行submit
2019-12-24 17:04
UchihaSasuke (作者)
回复 DCloud_uniCloud_WYQ: 好的, 谢谢
2019-12-25 09:13
UchihaSasuke (作者)
回复 DCloud_uniCloud_WYQ: 依然不行, 请查看这个issue: https://ask.dcloud.net.cn/question/85868
除了issue中的renderfunction,还尝试了innerHTML插入dom, 两个方法均不行,
2019-12-25 11:20