【问题标题】:PHP script won't pass content on to Ajax callPHP 脚本不会将内容传递给 Ajax 调用
【发布时间】:2016-02-14 09:29:09
【问题描述】:

我想知道我的代码有什么问题,这是对 php 脚本的非常简单的 ajax 调用,但是 php 脚本中的文本不会传递到 html 页面。怎么了?

<html>
<script>
function checkForm() {

    var pass = document.getElementById("oldpassword").value;
    var pass1 = document.getElementById("passwordnew1").value;
    var pass2 = document.getElementById("passwordnew2").value;

    if (pass == '' || pass1 == '' || pass2 == '') {
        alert("Fill All Fields");
    } else {

        var passcheck = document.getElementById("editpassword");
        var passcheck1 = document.getElementById("equalpasswords1");
        var passcheck2 = document.getElementById("equalpasswords2");

        if (passcheck.innerHTML == 'Must be 3+ letters' || passcheck2.innerHTML == 'Password too short' || passcheck3.innerHTML == 'Invalid email') {
            alert("Fill Valid Information");
        } else {
            document.getElementById("myForm").submit();
        }
    }
}


function validate(field, query) {
    var xmlhttp;

    if (window.XMLHttpRequest) { // for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() {

    if (xmlhttp.readyState != 4 && xmlhttp.status == 200) {
        document.getElementById(field).innerHTML = "Validating..";
    } else if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById(field).innerHTML = xmlhttp.responseText;
    } else {
        document.getElementById(field).innerHTML = "Error Occurred. <a     href='index.html'>Reload Or Try Again</a> the page.";
    }

    xmlhttp.open("GET", "validation.php?field=" + field + "&query=" + query, false);
    xmlhttp.send();
}
</script>
<body>
    <form action="#" id="myForm" name="passwordform" method="post">
        <div class="container">
            <table>
                <tr>
                    <td style="width:100px"><p><b>My email:</b></td>
                    <td><p><?php print($email); ?></p></td>
                    <td></td>
                </tr>
                <tr>
                    <td><p><b>My password:</b></td>
                    <td><p id="editpassword"></p><p id="insertpassword"><input type="password"     id="oldpassword" name="inputedPassword" onblur="validate('inputedPassword',  this.value)" value="<?php print($password); ?>"/></p></td>
                    <td></td>
                </tr>
                <tr>
                    <td><p><b>My new password:</b></td>
                    <td><p id="equalpasswords1"></p><input type="password" id="passwordnew1"  name="Password1" onblur="validate('Password1', this.value)"/></td>
                    <td></td>
                </tr>
                <tr>
                    <td><p><b>Confirm password:</b></td>
                    <td><p id="equalpasswords2"></p><input type="password" id="passwordnew2"    name="Password2" onblur="validate('Password2', this.value)"/> <input  type="button" value="Save" onclick="checkForm()"></td>
                    <td></td>
                </tr>
            </table>
        </div>
    </form>
</body>
</html>

这是它调用的php代码:

<?php
$value = $_GET['query'];
$formfield = $_GET['field'];

if ($formfield == "inputedPassword") {
    if (strlen($value) < 4) {
        echo "Must be 3+ letters";
    } else {
        echo "<span>Valid</span>";
    }
}

if ($formfield == "Password1") {
    if (strlen($value) < 6) {
        echo "Password too short";
    } else {
        echo "<span>Strong</span>";
    }
}

if ($formfield == "Password2") {
    if (strlen($value) < 6) {
        echo "Password too short";
    } else {
        echo "<span>Strong</span>";
    }
}

?>

【问题讨论】:

    标签: php html ajax xml xhtml


    【解决方案1】:
    var passcheck = document.getElementById("editpassword");
    var passcheck1 = document.getElementById("equalpasswords1");
    var passcheck2 = document.getElementById("equalpasswords2");
    
    if (passcheck.innerHTML == 'Must be 3+ letters' || passcheck2.innerHTML == 'Password too short' || passcheck3.innerHTML == 'Invalid email') {
    

    if 测试中的变量名不正确。您正在声明变量 passcheckpasscheck1passcheck2,但在您的 if 测试中,您正在调用 passcheckpasscheck2passcheck3

    【讨论】:

    • 我认为在您的验证中,第一个参数应该是您的输入 ID ,因此它应该是passwordnew2 而不是Password2
    • 我不这么认为。这不起作用,这里formget.com/form-validation-using-ajax 说它应该是名称
    • 但是在你的 validate 函数中,它调用了document.getElementById(field),所以我不明白你为什么需要这个名字......因为你调用的是document.getElementById
    • 我已经检查了您链接的演示。函数 validate 中的第一个参数是您没有的表格第三列上 div 标记的 ID。所以现在,你的结果没有返回。
    • 我没有在新栏目中,我在同一栏目的三个段落中都有。

      你看到了吗?

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多