Javascript在内部或标签中不起作用

时间:2013-07-12 06:41:32

标签: php javascript ajax

我尝试了这段代码:

<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>

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

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我至少看到两个问题:

  1. JavaScript区分大小写,var tbl = document.GetElementByID("tbl_users");应为var tbl = document.getElementById("tbl_users");(请注意g中的dgetElementById)。

  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;
    

    ...在+之后和"&firstName="之前,您错过了tbl.cells[2].value。您的控制台应该告诉您有Unexpected identifier

答案 1 :(得分: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);
    }
}