Эй, я новичок в Эфириуме.В настоящее время я испытываю основные вызовы / транзакции в веб-приложении.Я написал метод, который возвращает массив строк и массив адресов.Если я вызываю этот метод в remixIde, он работает, и я получаю значения для обоих массивов.Однако тот же вызов в web3 возвращает только значения для массива адресов.Массив строк есть, но все значения пусты.
Я использую цепочку Ganache для тестирования и подключаю ремикс к нему.web3 использует Metamask в качестве провайдера.Я использую "Pragma экспериментальный ABIEncoderV2" с Solidity.
Функция Solidity:
function getAuthorityNames() view public returns(string[], address[]){
string[] memory names = new string[](authoritiesAddr.length);
for(uint256 i=0; i < authoritiesAddr.length ;i++){
names[i]=authorities[authoritiesAddr[i]].name;
}
return(names,authoritiesAddr);
}
js код:
getAuthority: function(web3) {
var mainContractObj = web3.eth.contract(ethFunctions.mainContractAbi);
var mainContract = mainContractObj.at(ethFunctions.mainContractAddr);
mainContract.getAuthorityNames.call(function(error, result) {
if (error) {
console.log("Error with transaction!");
console.log(error);
} else {
console.log("Transaction successful!");
console.log(result);
}
});
}
ремикс возвращаемые значения
веб-возвращаемые значения
Вызовы работают с обоими методами!Только возвращаемое значение отличается.Почему это?Спасибо!