如何将当前登录用户的全名添加到Wix表单提交内容中?
Wix表单提交时获取当前用户全名的代码修复
你的代码核心问题有两个:一是定义了异步箭头函数但从未调用,二是异步处理里有多余的await操作,具体如下:
核心错误点
- 未调用定义的异步函数:你在
onSubmit回调里写了一个匿名异步箭头函数,但只是定义了它,没有执行调用,所以代码根本不会进入这个函数,自然看不到console.log的输出。 - 多余的
await使用:getAuthor函数最后return await author完全没必要——author是普通字符串,不是Promise对象,直接返回即可。
修复后的代码
简洁版(去掉冗余嵌套)
$w.onReady(function () { // 将onSubmit回调设为异步函数,直接在内部处理异步逻辑 $w("#form2").onSubmit(async (values) => { const options = { fieldsets: ["FULL"] }; // 等待获取当前成员数据 const member = await currentMember.getMember(options); // 拼接全名 const author = `${member.contactDetails.firstName} ${member.contactDetails.lastName}`; console.log("author: ", author); // 这里可以把author添加到表单提交数据中,比如: // values.submittedBy = author; // 之后执行表单提交或自定义数据处理逻辑 }); });
保留原函数结构的修复版
如果你想保留getAuthor函数的结构,只需补上函数调用,并去掉多余的await:
$w.onReady(function () { $w("#form2").onSubmit(async (values) => { async function getAuthor() { const options = { fieldsets: ["FULL"] }; const member = await currentMember.getMember(options); const details = member.contactDetails; return `${details.firstName} ${details.lastName}`; // 直接返回字符串 } // 调用异步函数并等待结果 const author = await getAuthor(); console.log("author: ", author); }); });
补充说明
因为你习惯了Java/C++这类语言的异步模型,需要注意JS里的异步函数(async/await)是基于Promise的:
- 标记为
async的函数会自动返回Promise; await只能用在async函数内部,用于等待Promise完成;- 定义异步函数后必须调用才会执行,这和你之前熟悉的同步函数调用逻辑一致——如果只定义不调用,代码永远不会执行。
内容的提问来源于stack exchange,提问作者John Kraynack
相关产品推荐
相关产品推荐

