UchihaSasuke
UchihaSasuke
  • 发布:2019-12-24 16:20
  • 更新:2019-12-25 12:01
  • 阅读:1379

【报Bug】h5端 支付宝支付 表单提交没有默认的submit方法

分类:HBuilderX

详细问题描述

业务需要做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再试] 未知

[编译模式是老模板模式还是新的自定义组件模式?] 自定义组件

2019-12-24 16:20 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

直接使用form的@submit实现不了是吗

  • 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

UchihaSasuke

UchihaSasuke (作者)

记录一下思路:
可能我的想法(原生submit)从一开始就是错的, uniapp做单页应用, 与支付宝做页面级别的交互, 只能考虑window.open,而不是原生的submit刷新页面,
我试图了解原生submit的原理,以便使用ajax模拟它, 但是找不到原生form的submit做了什么事情,这条路可能是无人走过的,不知道uniapp还留了多少坑,

  • teller306

    返回的form表单是怎样在uniapp中显示的,请问你是怎样解决的

    2020-05-03 00:29

该问题目前已经被锁定, 无法添加新回复