.new() не работает в обработчике кликов jQuery

Я использую truffle в качестве платформы для разработки Dapp вместе с testrpc. Когда я пытаюсь создать новый экземпляр моего контракта с помощью метода .new(), у меня возникает проблема с распечаткой сведений о контракте этого нового экземпляра контракта в console.log в консоли JS браузера. В частности, я запускаю вызов метода .new() с помощью метода jquery click(), который принимает значения параметров конструктора контракта в браузере. Код, который я использую, содержится в файле app.js, ссылка на который содержится в файле index.html и представлена ​​ниже:

$("#clickButton").click(function() {

    var accounts = web3.eth.accounts;
    var Param1 = parseInt($("input#param1").val());
    var Param2 = parseInt($("input#param2").val());
    var Param3 = parseInt($("input#param3").val());

    console.log(Param1,Param2,Param3)

    var myContractInstance=myContract.new(Param1,Param2,Param3,{ from: accounts[0]});

    console.log(myContractInstance);

    myContractInstance
    .then(function(contract) {
    console.log('Contract created', contract)
    })
    .catch(function(err) {
    console.log('Error', err)
    });

Распечатка, которую я получаю в консоли JS, выглядит следующим образом (примечание: у меня есть входные значения 1111,222 и 3333 для моих значений для Param1, Param2 и Param3:

1111 222 3333 Обещание {_bitField: 0, _fulfillmentHandler0: не определено, _rejectionHandler0: не определено, _promise0: не определено, _receiver0: не определено…} Ошибка Ошибка: неверный ответ JSON RPC: «»(…)

Понятно, что значения потребляются правильно (поскольку они распечатываются). Кроме того, ясно, что объект обещания создается (поскольку это также правильно распечатано). Кажется, после этого ошибка.

Однако, если я скопирую и вставлю точно такой же код выше в консоль JS браузера, я не получу приведенную выше ошибку, т.е. контракт распечатывается в console.log, как и ожидалось, без проблем. Я сбит с толку тем, почему я получаю сообщение об ошибке, если использую метод jquery click(), но я не получаю сообщение об ошибке, если я ввожу код непосредственно в консоль JS. Любая помощь очень ценится.

Ответы (1)

Поведение по умолчанию при нажатии кнопки — отправить форму. Когда вы щелкаете ссылку, страница обновляется после отправки формы, прерывая запрос web3.

Добавьте return falseв конец вашего обработчика кликов, чтобы предотвратить действие браузера по умолчанию, и он будет работать.

@thegooders, если это решение решит вашу проблему, примите его
На самом деле, я думаю, что понял это. Если нет, пожалуйста, дайте мне знать.