Solidity

ERC721 Dapp 不工作,不顯示代幣所有者

  • August 3, 2018

所以我正在建構一個 Dapp 來與 ERC721 合約進行互動。到目前為止,我能夠鑄造、轉移和檢查地址餘額。我一直試圖顯示誰擁有哪個令牌(通過他們的令牌 ID)。輸出一直在說

0x

它隨機工作並顯示所有者的地址。控制台沒有顯示任何錯誤。附件是我的程式碼和輸出圖片。提前致謝。

程式碼

<h1>Token Owner</h1>
<br><label for "tokenId">Token ID;</label><input type="text" id="tokenId" placeholder="e.g., 03945812"></input>
<br><br>Owner is <span type="text" id="wallet"></span>
<br><br><button id="check" onclick="App.ownerOf()">Check</button>
<br><br>

App.js 程式碼

//App.ownerOf function 5
ownerOf: function(){ //stuck at Checking blockchain info... not throwing an error
var self = this;

var tokenId = parseInt(document.getElementById("tokenId").value);

this.setStatus("Checking Blockchain info...");

var check;
ERC721Token.deployed().then(function(instance){
 check = instance;
 return check.ownerOf.call(tokenId,{from: account});
}).then(function(account){ //function(owner)
 var value;
 value = account;
 var account_element = document.getElementById("wallet");
 account_element.textContent = value.valueOf();
}).catch(function(e){
 console.log(e);
 self.setStatus("Error checking ticket ID; see log");
});
}

ERC7221BasicToken.sol 程式碼

...
function ownerOf(uint256 _tokenId) public view returns (address) {
 address owner = tokenOwner[_tokenId];
 require(owner != address(0));
 return owner;
}

網頁截圖

在此處輸入圖像描述

再次感謝!現在讓我知道你們是否需要我添加其他內容。

所以我犯了一個愚蠢的錯誤,在我的 HTML 中,我在兩個函式中使用了相同的“id”。我剛剛更改了id,現在正在工作。

看來您正在使用松露(我在松露方面沒有太多經驗)。但是,如果您使用以下程式碼片段,您的任務將完成。在您的情況下無需使用 call 。希望這會幫助你。

ownerOf: function(){
var self = this;
var tokenId = parseInt(document.getElementById("tokenId").value);
var contractAbi = web3.eth.contract(YourContractABI);
var myContract = contractAbi.at(YourContractAddress);
myContract.ownerOf(tokenId,function(error,data){
if(data){
      //Here Data will be Token Holder address
    }
});
}

引用自:https://ethereum.stackexchange.com/questions/55723