2016-08-20 129 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.

菜單/選項/高級/網絡/連接糾正 - 設置

更改代理服務器從

使用系統代理

設置

無代理

不確定原因,但是這改正了問題計算機上的問題,網頁在更改後按預期工作。

相關問題