2016-08-20 123 views
-2

我不明白为什么下面的代码在IE和Firefox中的另一台计算机上,但在我的笔记本电脑上。

我卸载并重新安装了Firefox和Java。
每个部分单击时都有一个确认和删除按钮,可以设置确认或删除报警。
在IE中可以正常工作,而在另一台计算机上可以使用Firefox的副本。

在计算机出现问题时,点击该按钮时屏幕闪烁,但警报既不清晰也不确认。
apache2日志中没有引发错误。

它基本上传递三个变量到另一个PHP页面,更新一个SQL表。
SQL中也没有引发任何错误。

只是在屏幕上闪烁,并没有改变问题的电脑。
在同一台计算机上的IE中正常工作。Javascript onclick不工作在Firefox

if ($_SESSION['pH1_Low_Alarm'] > 0) { 
    echo "<tr>"; 
    echo "<td>"; 
    echo $_SESSION['pH1_Low_Time']; 
    echo "</td>"; 
    echo "<td>pH1 Low</td>"; 
    if ($_SESSION['pH1_Low_Alarm'] == 1) { 
     echo "<td>Unacknowledged</td>"; 
     echo "<td></td>"; 
     echo "<td><input type=\"submit\" name=\"alarmname_ack_id\" id=\"alarmname_ack_id\" value=\"Acknowledge\" onclick=\"alarm_sql('pH1','Low_Alarm',3)\" /></td>"; 
    } 
    if ($_SESSION['pH1_Low_Alarm'] == 2) { 
     echo "<td>Unacknowledged</td>"; 
     echo "<td align=\"center\"><img src=\"img/email.png\" /></td>"; 
     echo "<td><input type=\"submit\" name=\"alarmname_ack_id\" id=\"alarmname_ack_id\" value=\"Acknowledge\" onclick=\"alarm_sql('pH1','Low_Alarm',4)\" /></td>"; 
    } 
    if ($_SESSION['pH1_Low_Alarm'] == 3) { 
     echo "<td>Acknowledged</td>"; 
     echo "<td></td>"; 
     echo "<td></td>"; 
    } 
    if ($_SESSION['pH1_Low_Alarm'] == 4) { 
     echo "<td>Acknowledged</td>"; 
     echo "<td align=\"center\"><img src=\"img/email.png\" /></td>"; 
     echo "<td></td>"; 
    } 
    echo "<td><input type=\"submit\" name=\"alarmname_ack_id\" id=\"alarmname_ack_id\" value=\"Delete\" onclick=\"alarm_sql('pH1','Low_Alarm',0)\" /></td>"; 
    echo "</tr>"; 
} 

功能由onclick事件称为

function alarm_sql(sensorname, alarmname, alarmvalue) { 
    var xmlhttp; 
    if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{ // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function(){ 
     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
      document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
     } 
    } 
    alarm_php_string = new String; 
    alarm_php_string = "sql/sql_alarm_set.php?sensorname=" + sensorname + "&alarmname=" + alarmname + "&alarmvalue=" + alarmvalue; 
    xmlhttp.open("GET",alarm_php_string,true); 
    xmlhttp.send(); 
    sleep(500); 
    document.location.reload(true); 
} 

UPDATE

如果我右键点击确认或删除按钮,并选择检查元素:

然后在出现的在调试器的窗口中,我在var声明后面的函数的开始处放置了一个断点。
我可以在点击按钮之后单步执行实际上以这种方式工作的代码。
不确定单步操作时的意思是什么,但没有断点代码失败。

这是单击确认按钮时在控制台中显示的内容,但不起作用。

GET 
http://192.168.1.200/yieldbuddy/www/alarms.php [HTTP/1.1 200 OK 16ms] 
GET 
http://192.168.1.200/yieldbuddy/www/img/background.png [HTTP/1.1 200 OK 11ms] 
GET 
http://192.168.1.200/yieldbuddy/www/img/banner.png [HTTP/1.1 200 OK 16ms] 
GET 
http://192.168.1.200/yieldbuddy/www/img/email.png 

这似乎是我的笔记本电脑上安装Window7的问题。我可以在房子里的其他所有计算机上运行这个代码,但是这个没有问题。升级到Firefox 48后,所有其他计算机仍可毫无问题地运行代码。不管是什么原因导致它发生,即使删除并重新安装Firefox和Java后。看起来我正在向问题计算机上的全新操作系统安装。

+2

没有断点,你会在Firefox的控制台中看到任何错误吗?另外,为什么在接收到Ajax响应之前,从运行*的代码调用'.reload()'?这可能是为什么添加断点修复事物。 (作为一个可能相关或不相关的因素,无论睡眠(500);''做*都不* *如何在JS中实现延迟。使用'setTimeout()'。) – nnnnnn

+0

您可以使用'alarmname_ack_id' “确认按钮”)多次作为“id”==>第一次:失败。你应该考虑单引号集作为总是转义的替代方法。==> 2nd ... As advise。问题:你的'$(“#alarmname_ack_id”)。click()'处理程序在哪里? –

回答

0

这个问题与Firefox中的下列行为48.

菜单/选项/高级/网络/连接纠正 - 设置

更改代理服务器从

使用系统代理

设置

无代理

不确定原因,但是这改正了问题计算机上的问题,网页在更改后按预期工作。