无法从JavaScript循环中打开PHP文件

时间:2017-10-05 17:35:34

标签: javascript php html ajax

在我的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
            }
        }
    }
}

你知道它为什么不起作用吗?我必须解决这个问题。

1 个答案:

答案 0 :(得分:0)

似乎您正在重新加载页面,然后很快就会使用window.location.href = "file.php?number=" + num.toString();将请求成功发送到您的PHP文件。

您只想在成功调用PHP文件后放置window.location.href一次。

我已将代码中的更改附加到此处的代码段中。您可以取消注释处理页面重新加载的行以进行测试,但它在本地适用于我。

&#13;
&#13;
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;
&#13;
&#13;