0

我试着把这段代码:

<script>
    function myfunc()
    {
        var xmlhttp;

        if(window.XMLHttpRequest)
            xmlhttp = new XMLHttpRequest();
        else
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

        xmlhttp.onreadystatechange=function()
        {
            if(xmlhttp.readyState==4 && xmlhttp.status==200)
                alert(xmlhttp.responseText);
            else
                alert("Something went wrong!");
        }

        var tbl = document.GetElementByID("tbl_users");
        var str="";

        var tid;
        var isActive;

        for(x=0; x=tbl.rows[x]; x++)
        {
            tid=0;
            isActive="true";

            if(tbl.cells[1].checked)
                tid=1;
            else
                tid=2;

            if(tbl.cells[6].checked)
                isActive="true";
            else
                isActive="false";

            str="uid="+tbl.cells[0].value+"&tid="+tid+"&firstName="tbl.cells[2].value+"&lastName="+tbl.cells[3].value+"&userName="+tbl.cells[4].value+"&passWord="+tbl.cells[5].value+"&isActive="+isActive;

            xmlhttp.open("POST", "save.php", true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send(str);
        }
    }
</script>

...在我正在制作的网页的标签内,因为我只遵循了一些显示相同的教程。这是我的 HTML 的代码:用户

    <!--JS codes above here-->
</head>

<body>
    <form>
        <table align='center' border='1' name='tbl_users'>
            <tr>
                <td>UID</td>
                <td>Admin</td>
                <td>First Name</td>
                <td>Last Name</td>
                <td>Username</td>
                <td>Password</td>
                <td>Active</td>
            </tr>

            <?php
            while($row = mysql_fetch_array($table))
            {
                echo "
                    <tr>
                        <td><input type='text' name='uid' value='".$row['uid']."' disabled/></td>";
                        if($row['tid'] == 1)
                            echo "<td><input type='checkbox' name='tid' value='1' checked/></td>";
                        else
                            echo "<td><input type='checkbox' name='tid' value='2'/></td>";
                echo "  <td><input type='text' name='firstName' value='".$row['firstName']."' /></td>
                        <td><input type='text' name='lastName' value='".$row['lastName']."' /></td>
                        <td><input type='text' name='userName' value='".$row['userName']."' /></td>
                        <td><input type='text' name='passWord' value='".$row['passWord']."'/></td>";
                        if($row['isActive'] == 0)
                            echo "<td><input type='checkbox' name='isActive' value='true' checked/></td>";
                        else
                            echo "<td><input type='checkbox' name='isActive' value='false'/></td>";

                echo "</tr>";
            }?>

        <tr>
            <td colspan='7' align='right'><input type='button' value="Save" onclick='myfunc()'/></td>
        </tr>
        </table>
    </form>
</body>

现在,我已经阅读了可能的解决方案,例如: - 将其放在$(document).ready()调用中 - 将 JS 代码放在标签内,就在结束标签的下方

但是,它仍然行不通。

我尝试过简单的 JS 代码,例如:

<script> function myfunc(){alert("hello world!");} </script>

...使用相同的解决方案,只有第二种方法适用于此。

任何想法?

4

2 回答 2

3

我至少看到两个问题:

  1. JavaScript 是区分大小写的,并且var tbl = document.GetElementByID("tbl_users");应该是var tbl = document.getElementById("tbl_users");(注意gand din getElementById)。

  2. 在这一行:

    str="uid="+tbl.cells[0].value+"&tid="+tid+"&firstName="tbl.cells[2].value+"&lastName="+tbl.cells[3].value+"&userName="+tbl.cells[4].value+"&passWord="+tbl.cells[5].value+"&isActive="+isActive;
    

    ...您缺少+after"&firstName="和 before tbl.cells[2].value。你的控制台应该告诉你你有一个Unexpected identifier.

于 2013-07-12T06:44:50.240 回答
1

for(x=0; x=tbl.rows[x]; x++)应该for(x=0; x<tbl.rows[x]; x++)是。

您需要在第 2 部分中使用比较运算符。

这是一个清理版本。请记住,您应该始终在 if 行的末尾使用花括号,因为 JS 编译器喜欢插入 ; 否则。

function myfunc() {
    var xmlhttp;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            alert(xmlhttp.responseText);
        } else {
            alert("Something went wrong!");
        }
    }

    var tbl = document.getElementById("tbl_users");
    var str = "";

    var tid;
    var isActive;

    for (x = 0; x < tbl.rows[x]; x++) {
        tid = 0;
        isActive = "true";

        if (tbl.cells[1].checked) {
            tid = 1;
        } else {
            tid = 2;
        }

        if (tbl.cells[6].checked) {
            isActive = "true";
        } else {
            isActive = "false";
        }

        str = "uid=" + tbl.cells[0].value + "&tid=" + tid + "&firstName=" 
                + tbl.cells[2].value + "&lastName=" + tbl.cells[3].value + "&userName="
                + tbl.cells[4].value + "&passWord=" + tbl.cells[5].value
                + "&isActive=" + isActive;

        xmlhttp.open("POST", "save.php", true);
        xmlhttp.setRequestHeader("Content-type",
                "application/x-www-form-urlencoded");
        xmlhttp.send(str);
    }
}
于 2013-07-12T07:05:08.180 回答