2015-02-06 81 views
1

我正在尝试用它自己的网络服务器构建一个气象站。到目前为止,该页面的代码是像这样:第二个Ajax请求无法在移动浏览器上工作

<!DOCTYPE html> 
<html> 
<head> 
<title>WS-100 Server</title> 
<script> 
    function UpdatePage() 
    { 
     var request = new XMLHttpRequest(); 
     request.onreadystatechange = function() 
     { 
      if(this.readyState == 4) { 
       if(this.status == 200) { 
        if(this.responseText != null) { 
         document.getElementById("currentTemp").innerHTML = this.responseText; 
        } 
       } 
      } 
     } 
     request.open("GET","ajax_update_temp",true); 
     request.send(null); 
     request= new XMLHttpRequest(); 
     request.onreadystatechange = function() 
     { 
      if(this.readyState == 4) { 
       if(this.status == 200) { 
        if(this.responseText != null) { 
         document.getElementById("currentDatetime").innerHTML = this.responseText; 
        } 
       } 
      } 
     } 
     request.open("GET","ajax_update_time",true); 
     request.send(null); 
     setTimeout("UpdatePage()", 10000); 
    } 
</script> 
</head> 
<body onload="UpdatePage()"> 
<h1>WS-100 Weather Station</h1> 
<div id="currentDatetime"> 
    <p> </p> 
</div> 
<div id="currentTemp"> 
    <p> </p> 
</div> 
</body> 
</html> 

它适用于桌面浏览器不错,但在移动浏览器仅日期时间显示,并在我的旧三星Galaxy,没有表现出来的。我曾考虑将两个查询合并为一个,但最终我至少要做两个请求:一个用于当前时间和温度,另一个用于下载和处理历史测量的txt文件。

这仅仅是浏览器的限制,还是应该有一种方法来解决它?

+0

只是一个测试,你为什么不打电话请求2到第二变种? 也许你正在覆盖request.onreadystatechange并根据设备的速度获得预期的答案。 或者你只是摧毁请求对象 – Olvathar 2015-02-06 07:47:16

+0

试过它没有用 – user3651203 2015-02-06 07:50:48

回答

2

尝试运行$('document').ready(function());,因为在移动webview中,桌面浏览器的某些功能受限于维护其性能。所以你需要一些时间来写的,而不是$('document').ready(function());onload()

0

从帕布答案和我:

<!DOCTYPE html> 
<html> 
<head> 
<title>WS-100 Server</title> 
<script> 
    function UpdatePage() 
    { 
     var request = new XMLHttpRequest(); 
     request.onreadystatechange = function() 
     { 
      if(this.readyState == 4) { 
       if(this.status == 200) { 
        if(this.responseText != null) { 
         document.getElementById("currentTemp").innerHTML = this.responseText; 
        } 
       } 
      } 
     } 
     request.open("GET","ajax_update_temp",true); 
     request.send(null); 
     var request2= new XMLHttpRequest(); 
     request2.onreadystatechange = function() 
     { 
      if(this.readyState == 4) { 
       if(this.status == 200) { 
        if(this.responseText != null) { 
         document.getElementById("currentDatetime").innerHTML = this.responseText; 
        } 
       } 
      } 
     } 
     request2.open("GET","ajax_update_time",true); 
     request2.send(null); 
     setTimeout("UpdatePage()", 10000); 
    } 
    $('document').ready(function() { 
     UpdatePage(); 
    }); 
</script> 
</head> 
<body> 
<h1>WS-100 Weather Station</h1> 
<div id="currentDatetime"> 
    <p> </p> 
</div> 
<div id="currentTemp"> 
    <p> </p> 
</div> 
</body> 
</html> 
+1

对不起,不完全相同的症状 – user3651203 2015-02-06 08:05:19

+0

这很奇怪,因为ajax_update_time是第二个,但它更好的工作 – user3651203 2015-02-06 08:09:35

+0

这就是为什么我第二次摧毁第一个请求,也许你需要调用'setTimeout(“UpdatePage()”,10000);'当第二个请求结束时,就在if(this.readyState == 4)的结束括号之前{(注意,因为如果你没有达到readyState 4你不会调用updatepage函数) – Olvathar 2015-02-06 08:11:34

相关问题