我正在使用 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中获得更新的数据。一切顺利。但是,如果我关闭调试器,然后单击按钮,则跨度innerHTML不会在UI上更改。我不知道为什么吗?也有时它改变有时没有改变。
这是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"
]
}
答案 0 :(得分:0)
好吧,我发现了问题。当我使用 HTML button type="submit"
时,这就是页面正在加载且数据没有根据我设置的内容进行更改的原因。它正在重置。为了避免页面加载,我使用了button type="button"
并解决了所有问题。