javascript - 收到 get 请求后如何重新加载 CSS 或按钮或页面的一部分?
问题描述
我试图在页面中添加一个 Facebook 共享按钮,其中包含来自 esp826 服务器的动态内容(如用户 ID),当页面正文加载时,使用像 innerhtml 这样的 java 脚本通过 ajax 调用一次 json 的获取请求。当我在本地主机上进行测试时,一切正常,因为 json 文件加载速度非常快,并且在按钮加载之前,所以一切正常。但是当我使用 esp8266 服务器时,get 请求的响应会在按钮加载后出现,所以当它收到并且字段填充了值时,按钮消失并且只保留一个带有链接的单词。
基本上按钮在我的本地主机上工作......所以innerhtml和一切都很好......看来我需要找到一种方法来重新加载css或通过javascript重新加载按钮框以再次激活按钮框。
有没有办法重新加载按钮?
.json 文件就是这样:getajx.json
{"temp1":"1", "energia":"2", "energiatotal":"3", "tem":"2", "cliente":"22", "usuario":"22"}
您可以通过将具有该内容的 getajx.json 文件放在 html 页面的同一目录中来在您的本地主机上进行测试...但是如果获取请求太长,我需要知道如何使其工作..请帮忙???
我尝试在响应为肯定后添加一个标志并用它激活 reloadCss 功能,但没有奏效
<script>
var temp1, energia, energiatotal, tem, cliente, usuario ;
var ok=0;
function GetAjx() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
ok = 1;
var myObj = JSON.parse(this.responseText);
document.getElementById("temp1").innerHTML = myObj.temp1;
document.getElementById("energiatotal").innerHTML = myObj.energiatotal;
document.getElementById("tem").innerHTML = myObj.tem;
}};
if (ok =1) { function reloadCss(){
var links = document.getElementsByTagName("link");
for (var cl in links){
var link = links[cl];
if (link.rel === "stylesheet")
link.href += "";
}}
};
xmlhttp.open("GET", "getajx.json" , true);
xmlhttp.send();
}
</script>
解决方案
我找到了解决方案...
显然我不得不改变脚本的顺序,使 jquery ajax 源首先加载,并且还试图将来自 facebook 的脚本放在页面底部......
我拿走了我正在测试的重新加载脚本和其他 facebook 脚本
最重要的是使获取请求为假以使其同步而不是异步这会强制页面等待获取请求完成..奇怪的是我之前尝试过并且没有工作这个解决方案可能是因为脚本的顺序..任何人都可以对此发表评论?
xmlhttp.open("GET", "getajx.json" , false);
在特定的性能选项卡中使用谷歌浏览器上的 f12 很有帮助
即使我尝试过,我也决定不搞乱脚本的优先级
任何评论我都会很感激
再次
谢谢您的帮助
推荐阅读
- wpf - WPF,XMAL 百分比间距计算全部错误
- c# - 如何在 C# 控制台应用程序中检索文件夹的共享权限?
- html - 找到了格式错误的“表单”标签助手。标签助手必须有一个开始和结束标签或自闭
- javascript - 在 Angular 上创建级联下拉菜单
- xml - XSD 中可以接受空或只有一个值的数据类型是什么?
- html - 如何更改下拉菜单中部分文本的颜色
- java - 如何在 MacOS Apple Store 中上传应用程序
- python - 在关键的Python中合并多个数据框
- python - 更快地从大型索引数组中删除/屏蔽少数条目
- postgresql - 由重复的临时表创建引起的 pg_attribute 膨胀