无法使用javascript与智能合约交互以获取用户地址和智能合约余额



我是区块链技术的新手,我已经制作了一个智能合约,它将显示合约余额和用户数据,如他的地址,余额,用户可以在智能合约中存入插入的金额,我的代码下降了,我无法显示合同余额和用户数据。它在混音中工作得很好。

smartcontract

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;
contract UserData {
address owner;
uint bal;
constructor() {
owner = msg.sender;
}
receive() external payable {}
function getBalance() view public returns(uint) {
return bal;
}
function deposit(uint amt) external payable {
bal = bal + amt;
bal += msg.value;
}
// function to get the useraddress
function getOwner() public view returns (address) {    
return owner;
}

// Function to return current balance of user
function getUserBalance() public view returns(uint256){
return owner.balance;
}
function withdraw(uint withdrawAmount) external payable {
require(msg.sender == owner, "Only owner can withdraw!");
payable(msg.sender).transfer(withdrawAmount);
}
}
下面是我的javascript代码:
<script>
var contract;
$(document).ready(function(){
web3 = new Web3(web3.currentProvider);
//ethereum.request({ method: 'eth_requestAccounts' });
var address = "0xd3553504e02681C4d4f1969017dAca11003bB496";
var abi = [];
contract = new web3.eth.Contract(abi, address);
contract.methods.getBalance().call().then(function(bal){
$('#balance').html(bal/10000000000000000);
})
contract.methods.getOwner().call().then(function(address){
$('#userAddress').html(address);
})
})
$('#deposit').click(function(){
var amt = 0;
amt = parseInt($('#amount').val());
web3.eth.getAccounts().then(function(accounts){
var acc = accounts[0];
return contract.methods.deposit(amt).send({from: acc});
}).then(function(tx){
console.log(tx);
}).catch(function(tx){
console.log(tx);
})
})
</script>

你的问题不具体。您可以查看包含相关主题视频的存储库。我相信你会在这里找到答案的。https://github.com/smartcontractkit/full-blockchain-solidity-course-js