Solidity에서 Javascript로의 반환 유형 관련 문제
P粉482108310
P粉482108310 2024-01-17 00:12:18
0
1
444

우선 문제를 더 쉽게 이해하실 수 있도록 문제 이해에 더 도움이 되는 기능들만 남겨두겠습니다. 이 코드를 사용하면 첫 번째 NFT의 idToken이 0인 배열에서 NFT를 생성할 수 있습니다. "계약에서 데이터 가져오기" 버튼을 클릭하면 매개변수 0을 readContract(tokenid) JavaScript 함수에 전달하여 Power 값, uint8(무작위로 생성, 0에서 100 사이의 값) HTML 파일을 표시하려고 합니다. 안타깝게도 버그가 발생하여 이를 해결하기 위해 다양한 방법을 시도했지만 성공하지 못했습니다. 계약과 JavaScript가 올바르게 연결되어 있으므로(이를 확인하는 connectContract() 함수로 입증됨) ABI와 주소는 문제의 일부가 아닙니다. readContract() 함수는 Solidity 계약에 작성된 getNFTPower 메서드를 사용하도록 되어 있지만 뭔가 잘못된 것 같습니다. 반환 값이 유효하지 않습니다. 하지만 나에게는 그것들이 하하… 또한 readContract() 함수의 첫 번째 코드 줄 앞과 뒤에 몇 가지 console.log 문을 삽입해 보았습니다. const power = 대기 window.contract.methods.getNFTPower(tokenId).call() 해당 명령문 다음에 console.log 출력이 표시되지 않으므로 문제가 발생한 것 같습니다.

누군가 나에게 힌트를 줄 수 있기를 바랍니다.. 감사합니다.

아래 오류 스크린샷

아래 코드의 일부입니다.

솔리디티 코드

으아아아

HTML/JS

으아아아

readContract() 함수를 다양한 방법으로 다시 작성해 보았지만 도움이 되지 않았습니다. 내 목표는 "계약에서 데이터 가져오기" 버튼을 클릭하고 매개변수로 전달하는 NFT의 tokenId의 POWER 값을 표시하는 것입니다(위 코드에서는 첫 번째 NFT, tokenId = 0).

P粉482108310
P粉482108310

모든 응답(1)
P粉262926195

가장 일반적인 두 가지 이유는 다음과 같습니다.

  1. Abi를 사용하고 계약 주소가 올바른 경우.
  2. 예를 들어 올바른 네트워크를 선택하면 계약이 테스트넷에 있는 경우 테스트넷을 선택할 수 있고, 계약이 메인넷에 있는 경우 메인넷을 선택할 수 있습니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿