我不明白爲什麼下面的代碼在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後。看起來我正在向問題計算機上的全新操作系統安裝。
沒有斷點,你會在Firefox的控制檯中看到任何錯誤嗎?另外,爲什麼在接收到Ajax響應之前,從運行*的代碼調用'.reload()'?這可能是爲什麼添加斷點修復事物。 (作爲一個可能相關或不相關的因素,無論睡眠(500);''做*都不* *如何在JS中實現延遲。使用'setTimeout()'。) – nnnnnn
您可以使用'alarmname_ack_id' 「確認按鈕」)多次作爲「id」==>第一次:失敗。你應該考慮單引號集作爲總是轉義的替代方法。==> 2nd ... As advise。問題:你的'$(「#alarmname_ack_id」)。click()'處理程序在哪裏? –