Не удалось обновить данные с помощью Javascript ajax async - PullRequest
0 голосов
/ 27 мая 2019

Я использую HTML , javascript и Nodejs код для разработки расширения Chrome.При загрузке страницы я вызываю функцию getBalance(), чтобы получить данные и связать их с диапазоном HTML.Ниже приведен мой код:

function getBalance() {
    var request = new XMLHttpRequest();
    request.open('GET', 'http://xxx.xxx.xx.xxx:xxxx/getAccount?address=xxxxxxxxxxxxxxxxxxxx', true);
    request.onload = function () {
      var data = JSON.parse(this.response);
      if (request.status >= 200 && request.status < 400) {
        var bal = data.Balance;
        var etherprice = bal / 1000000000000000000;
        document.getElementById("accbal").innerHTML = etherprice;
      } else {
        console.log('error');
      }
    }
    request.send(null);
}

window.addEventListener('load', function load(event){
    getBalance();
});

function sendTransactionBroadcast(result){ 
    var doAjax = function() { 
    $.ajax({ 
    type : "POST", 
    url : "http://xxx.xxx.xx.xxx:xxxx/broadcast",   
    data: JSON.stringify(result), 
    contentType: 'text/plain; charset=UTF-8', 
    success:function(json){ 
      console.log(json);
      getBalance();
    }, 
    error: function() { 
    alert("Error"); 
    } 
    }); 
    } 
    doAjax(); 
    }

sendTransactionBroadcast() функция вызывается по нажатию кнопки, эта функция имеет ajax асинхронный вызов POST .После его выполнения, в случае успеха, я хочу обновить данные из функции getBalance() и привязать их к диапазону.Итак, я снова называю это успехом ajax.Проблема в том, что если я установил отладчик и построчно отлаживал код, я получал обновленные данные в span innerHTML.Все идет хорошоНо если я закрою отладчик и нажму кнопку, span innerHTML не изменится в пользовательском интерфейсе.Я не понимаю причину почему?Также иногда это изменилось, иногда нет.Это проблема асинхронного ответа Ajax или что-то еще?Как это решить?

manifest.json

{
  "manifest_version": 2,

  "name": "C Wallet",
  "description": "The C Wallet in your browser",
  "version": "1.0",

  "browser_action": {
   "default_icon": "Image/CI_logo-01.png",
   "default_popup": "popup.html"
  },
  "icons": { "16": "Image/CI_logo-01.png",
    "48": "Image/CI_logo-01.png",
   "128": "Image/CI_logo-01.png" 
  },
  "permissions": [
   "activeTab"
   ]
}

1 Ответ

0 голосов
/ 31 мая 2019

Ну, я нашел проблему.Поскольку я использовал HTML button type="submit", это было причиной того, что страница загружалась, а данные не менялись в соответствии с тем, что я настраивал.Это сбрасывалось.Чтобы избежать загрузки страницы, я использовал button type="button", и все проблемы были решены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...