首页 > 解决方案 > 收到 get 请求后如何重新加载 CSS 或按钮或页面的一部分?

问题描述

获取请求到达后,值在那里并且按钮消失 收到get请求后

这是在本地主机上工作的按钮.. 预期在本地主机上显示按钮 woking ex

我试图在页面中添加一个 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>

标签: javascripthtmlcssajaxget-request

解决方案


我找到了解决方案...

显然我不得不改变脚本的顺序,使 jquery ajax 源首先加载,并且还试图将来自 facebook 的脚本放在页面底部......

我拿走了我正在测试的重新加载脚本和其他 facebook 脚本

最重要的是使获取请求为假以使其同步而不是异步这会强制页面等待获取请求完成..奇怪的是我之前尝试过并且没有工作这个解决方案可能是因为脚本的顺序..任何人都可以对此发表评论?

xmlhttp.open("GET", "getajx.json" , false);

在特定的性能选项卡中使用谷歌浏览器上的 f12 很有帮助

即使我尝试过,我也决定不搞乱脚本的优先级

任何评论我都会很感激

再次

谢谢您的帮助


推荐阅读