【问题标题】:Accepting parameters in javascript to send to solidity smart contract接受 javascript 中的参数以发送到solidity 智能合约
【发布时间】:2018-08-11 17:04:22
【问题描述】:

编写了这个简单的solidity合约,其中函数接受一些参数。

function fund(uint _dbIndex, uint _fundedAmount) public {
    uint totalAmount = projectWallets[_dbIndex].fundedAmount;
    totalAmount += _fundedAmount;
    projectWallets[_dbIndex].fundedAmount = totalAmount;
}

创建此智能合约后,我尝试使用 javascript 将 SC 连接到 HTML 页面。我设法让一个没有参数的函数工作,但如果函数中有参数,它就无法工作..

<input type="number" min="0" placeholder="Fund Amount" style="color: black;" id="fund">
<button id="fund_project">Fund Project</button>

上面是将值发送到智能合约的输入和按钮。

$('#fund_project').click(function (e) {
  e.preventDefault();

  log("Calling fund function...");

  counter.fund(dbIndex, funds);
});

这是一段代码,我在其中使用带参数的函数。如何让它工作?

【问题讨论】:

  • dbIndexfunds 定义在哪里?
  • 你得到什么错误?如果您没有收到错误,那是什么原因导致无法正常工作?
  • i 是在合同中定义的。只是展示我是如何完成这个功能的。我得到的错误是“未捕获的错误:MetaMask Web3 对象不支持没有回调参数的同步方法,例如 eth_sendTransaction。”
  • 这个错误有什么你不明白的地方吗? (你不知道回调是什么吗?)
  • 我不太明白是的。在我提交问题之前忘记包含错误是的

标签: javascript solidity smartcontracts web3


【解决方案1】:

回调是在操作完成时调用的函数。您需要使用一个,例如:

counter.fund(dbIndex, funds, function (err, result) {
  if (err) {
    console.log('Error: ' + err);
  }
  else {
    console.log(result);
  }
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-05
    • 2018-06-29
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多