我有一个在Firefox中运行但不在Chrome或IE中的脚本(javascript)。我打开了chromes调试控制台来查找问题。没有报告错误,代码完美无缺。在控制台关闭的情况下再次运行它不再有效。
我验证了脚本的版本是正确的(不旧和缓存)。控制台不会报告任何警告或错误。
我尝试将简单的日志记录写入页面底部的div - 没有信息。 (在调试控制台中它可以工作 - 包括在div中记录信息)。
该函数是对服务器进行XMLHttpRequest后的回调。
我确认通过包含error_log调用来调用php脚本。 error_log正确显示返回值。页面刷新还会显示该行已被删除。
除非控制台处于打开状态,否则似乎永远不会调用函数removeRow()。 (方法或保留字冲突??)尝试将函数名称更改为delRow(包括回调) - 仍然无法正常工作。
所有其他Ajax调用似乎都运行良好。
代码段如下:
var pos = 0;
var xhr;
function eraseRow() {
var myImage = this;
var fullid = myImage.id;
// split row no and record id eg 5_1223 => row=5 and recordid=1223
var idComponents = fullid.split("_");
if (idComponents.length > 1) { // check if image has complete row info
rowid = idComponents[1]; // extract row number from id
pos = parseInt(idComponents[0]);
xhr = new XMLHttpRequest(); // only support IE8 or +
xhr.onreadystatechange = removeRow;
xhr.open("GET","valid_del.php$delrow="+rowid;
xhr.send(null);
}
}
function removeRow() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var err = document.getElementById("errormsg");
var str = xhr.responseText;
err.innerHTML = "Server returned "+str;
if (str === "go-ahead") {
var table = document.getElementById("tableid");
table.deleteRow(pos);
}
}
}
}
PHP(valid_del.php):
<?php
include(funclib.php);
if (isset($_GET['delrow']) && strlen($_GET['delrow'] > 0) {
$recid = $_GET['delrow'];
$db = createDbConn(); // function that connects to mysql server db
$result = $db->query("delete from doclibrary where doc_id='$recid'");
if ($result===true) {
echo 'go-ahead';
error_log('Script successful - returns go-ahead',0);
} else {
echo 'stop';
error_log('Script not successful - returns stop',0);
}
$db->close();
} else {
echo 'stop';
error_log('Script not given record id - returns stop',0);
}
?>
答案 0 :(得分:0)
我认为DOM尚未就绪,尝试将您的代码调用添加到window.onload中,或者在$(document).ready中添加。如果您使用的是JQuery。