【问题标题】:(Solidity + JS) Uncaught Error: Invalid number of arguments to Solidity function(Solidity + JS)未捕获的错误:Solidity 函数的参数数量无效
【发布时间】:2018-11-07 01:48:27
【问题描述】:

我正在尝试调用solidity 函数并收到错误消息。这就是我创建合同的方式:

var EthProjContract = web3.eth.contract(my abi);
var EthProj = EthProjContract.at('0xcce478FDeF9F1DF933e31B1eeA48561e0095628A');

我这样调用我的函数:

EthProj.setMessage.sendTransaction(shoco.compress(document.getElementById("MessageBox").value), {from: document.getElementById("add").value})

并得到这个错误:

Uncaught Error: Invalid number of arguments to Solidity function

如果您想知道 shoco.compress 是什么,它会将我的字符串压缩成 uint8arrays。例如,

shoco.compress("Hello") 返回Uint8Array(3) [72, 193, 77]

如果我的MessageBox 框中有Hello 并拨打电话

EthProj.setMessage.sendTransaction(shoco.compress(document.getElementById("MessageBox").value), {from: document.getElementById("add").value})

我得到了错误。但是,当我打电话时

EthProj.setMessage.sendTransaction([72, 193, 77], {from: document.getElementById("add").value})

完美运行。这意味着获取我的文本不会有任何问题。那会是什么?我所能想到的可能是Uint8Array(3) 在那里可能会搞砸。如果是这样,我该如何解决?

【问题讨论】:

  • 对不起,我在帖子中的代码格式错误,我编辑它是正确的。我想我正在研究如何解决它。当我这样做时:var message = [0, 0, 0]; message[0] = shoco.compress(document.getElementById("MessageBox").value)[0]; message[1] = shoco.compress(document.getElementById("MessageBox").value)[1]; message[2] = shoco.compress(document.getElementById("MessageBox").value)[2];sendTransaction 使用消息作为我的论点,它可以工作。只有当我可以使它具有可变长度之类的东西时。

标签: javascript html solidity web3 geth


【解决方案1】:

修正了我的错误。 这是我的做法。

 var message = [0, 0, 0];
        for(var i = 0; i < shoco.compress(document.getElementById("MessageBox").value).length; i++) {
            message.length = shoco.compress(document.getElementById("MessageBox").value).length;
            message[i] = shoco.compress(document.getElementById("MessageBox").value)[i];
        }

我发现它不起作用,因为它在shoco.compress 的返回中显示了uint8array。我通过创建一个新数组并将该数组设置为等于我的shoco.compress 来解决此问题,摆脱了uint8array

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2018-02-20
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2022-12-17
    • 2019-08-15
    相关资源
    最近更新 更多