与表单一起使用时,字符串参数不会自动解析为 bytes32

Posted

技术标签:

【中文标题】与表单一起使用时,字符串参数不会自动解析为 bytes32【英文标题】:String parameter not automatically parsing into bytes32 when used with form 【发布时间】:2018-03-11 11:52:15 【问题描述】:

我有一个像这样的solidity函数-

function issueCertificate(address _recipient, bytes32 _certi_name)

当我使用 truffle 控制台调用该函数时,我可以使用 -

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")

但是当我使用 web3 和具有相同数据的字符串格式的表单运行它时,它会给出错误-

错误:给定参数不是字节:“随机”

我想我在这里缺少一些基本的东西。请帮忙。

【问题讨论】:

【参考方案1】:

如果您使用的是 web3.js 1.0 版,则可以如下所示包装字符串:

web3.utils.asciiToHex("random")

在此处查看文档:

https://web3js.readthedocs.io/en/1.0/web3-utils.html#asciitohex

【讨论】:

【参考方案2】:

试试:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", bytes32("random"))

基本上,用 bytes32() 包装字符串

编辑,错过了来自 Web3 的呼叫尝试:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.fromAscii("random"))

基本上,在 Web3 中,使用 web3.fromAscii() 包装字符串

更新:

最新版本使用:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))

【讨论】:

javascript中没有“bytes32()”。 对不起,错过了你从 web3 调用它尝试用 web3.fromAscii("random") 包装字符串 谢谢。有效。最新版本是“web3.utils.fromAscii”。 再次弃用 - 按照其他答案的建议使用 web3.utils.asciiToHex

以上是关于与表单一起使用时,字符串参数不会自动解析为 bytes32的主要内容,如果未能解决你的问题,请参考以下文章

子窗体内的 MS Access 参数查询不会打印

将 Django 表单资产(媒体类)与清晰表单一起使用时,页面中不包含 .js 文件

PHP / PDO动态绑定值(无效的参数计数错误)

使用 JavaScript 手动提交表单不会发送提交按钮

将下拉菜单与 PayPal 订阅一起用于“A3”参数

将分页与查询字符串一起用于搜索表单,该表单的方法设置为进入 codeigniter