在我的HTML文件中,我有一个JavaScript onclick
标记中包含<script>
方法的按钮。它激活一个名为deleteRow
的函数,该函数从HTML页面中的表中删除一行。
在函数内部,有一个循环。在该循环中有一个if
条件删除该行。我想在打开PHP文件的删除代码之后添加一个代码行,并将其作为GET变量发送给循环的当前i
。
问题在于它确实删除了行,但它没有打开文件。
我已尝试使用以下方式执行此操作:
// 1.
window.location.href = "file.php?number=" + num.toString();
// 2.
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "file.php?number=" + num.toString(), true);
xmlhttp.send();
// 3.
location.href = "file.php?number=" + num.toString();
location.reload();
出于某种原因,没有任何作用,即使代码后面有break;
也没有用。我也尝试用Ajax
做到这一点。
这是整个函数的代码:
function deleteRow(tableID) {
var conf = confirm("Are you sure you want to delete the checked products?");
if (conf == true) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for (var i = 0; i < rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].querySelector('[type=checkbox]');
if (null != chkbox && true == chkbox.checked) {
if (rowCount <= 1) {
alert("Cannot Remove all Products");
break;
}
table.deleteRow(i);
rowCount--;
i--;
var num = i + 1;
// The above code to load the PHP file goes here
}
}
}
}
你知道它为什么不起作用吗?我必须解决这个问题。
答案 0 :(得分:0)
似乎您正在重新加载页面,然后很快就会使用window.location.href = "file.php?number=" + num.toString();
将请求成功发送到您的PHP文件。
您只想在成功调用PHP文件后放置window.location.href
一次。
我已将代码中的更改附加到此处的代码段中。您可以取消注释处理页面重新加载的行以进行测试,但它在本地适用于我。
function deleteRow(tableID) {
var conf = confirm("Are you sure you want to delete the checked products?");
if (conf == true) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for (var i = 0; i < rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].querySelector('[type=checkbox]');
if (null != chkbox && true == chkbox.checked) {
if (rowCount <= 1) {
alert("Cannot Remove all Products");
break;
}
table.deleteRow(i);
rowCount--;
i--;
var num = i + 1;
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "test.php?number=" + num.toString(), true);
xmlhttp.send();
// Uncomment the code below to refresh the current page
// with the GET parameter
//window.location.href = window.location.href + '?number=' + num.toString();
// Uncomment the code below to open the test.php page instead
// with the GET parameter
//window.location.href = 'test.php?number=' + num.toString();
}
}
}
}
&#13;
<table id="test" border="1px">
<tr>
<td><input type="checkbox" onclick="deleteRow('test')">delete</td>
<td>product name</td>
</tr>
<tr>
<td><input type="checkbox" onclick="deleteRow('test')">delete</td>
<td>product name</td>
</tr>
</table>
&#13;