javascript - 通过 Ajax 提交输入值时的 PHP 未定义索引

标签 javascript php ajax

我正在尝试将数据提交到数据库,但出现未定义索引错误。

我使用 isset 函数来检查我是否获得了任何值并使用了 print_r 但我无法获得任何值。

虽然ajax发送请求成功,但是php $_POST还是取不到任何值。它是空的。

这是错误

Notice: Undefined index: email in C:\xampp\htdocs\msaccess\tst.php on line 5

Notice: Undefined index: username in C:\xampp\htdocs\msaccess\tst.php on line 6

Notice: Undefined index: fullname in C:\xampp\htdocs\msaccess\tst.php on line 7

Notice: Undefined index: password in C:\xampp\htdocs\msaccess\tst.php on line 8

Notice: Undefined index: repass in C:\xampp\htdocs\msaccess\tst.php on line 9
INSERT INTO submitform(fullname,email,username,userpassword,datesubmit) VALUES ('','','','','02/07/2014 02:45:53')
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Field 'submitform.username' cannot be a zero-length string., SQL state S1000 in SQLExecDirect in C:\xampp\htdocs\msaccess\tst.php on line 13
success

这是我的 HTML

<div class="form">
                    <div class="form-header">
                        Create Your Account
                    </div>
                    <div class="form-body">
                        <div class="row line">
                            <div class="callit">Full Name: </div>
                            <div class="inputbox"><input class="fullname" type="text" id="fullname" placeholder="Full Name" /></div>
                        </div>
                        <div class="row line">
                            <div class="callit">Email: </div>
                            <div class="inputbox"><input class="email" type="email" id="email" placeholder="Email Address"  /></div>
                        </div>
                        <div class="row line">
                            <div class="callit">Username: </div>
                            <div class="inputbox"><input class="username" type="text" id="username" placeholder="Username" /></div>
                        </div>
                        <div class="row line">
                            <div class="callit">Password: </div>
                            <div class="inputbox"><input class="password" type="password" id="password" placeholder="Password" /></div>
                        </div>
                        <div class="row line">
                            <div class="callit">Retype Password: </div>
                            <div class="inputbox"><input class="repass" type="password" id="repass" placeholder="Retype Password"  /></div>
                        </div>
                    </div>
                    <div class="footer">
                        <button type="button" onclick="vals();">Create Account</button>
                        <div><span id="status"></span></div>
                    </div>
            </div>

这是我的 Javascript/Ajax 调用

<script type="text/javascript">
        function vals(){
            var e = document.getElementById('email').value;
            var fn = document.getElementById('fullname').value;
            var u = document.getElementById('username').value;
            var ps = document.getElementById('password').value;
            var rep = document.getElementById('repass').value;
            document.getElementById('status').innerHTML = e+' '+fn+' '+u+' '+ps+' '+rep+' ';

            var xmlhttp;
            if(window.XMLHttpRequest){
                xmlhttp = new XMLHttpRequest();
            }
            else{
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function(){
                if(xmlhttp.readyState==4 && xmlhttp.status == 200){
                    document.getElementById('status').innerHTML = xmlhttp.responseText;
                }
            }
            xmlhttp.open("POST", "tst.php", true);
            xmlhttp.send("email="+e+"&fullname="+fn+"&username="+u+"&password="+ps+"&repass="+rep);
        }
    </script>

这是tst.php文件代码

<?php
include_once('includes/db.php');


    $email = $_POST['email'];
    $username = $_POST['username'];
    $fullname = $_POST['fullname'];
    $password = $_POST['password'];
    $repass = $_POST['repass'];
    $date = date('m/d/Y H:i:s');
        $sql = "INSERT INTO submitform(fullname,email,username,userpassword,datesubmit) VALUES ('$fullname','$email','$username','$password','$date')";
        echo $sql;
        $rs = odbc_exec($conn, $sql);
        echo 'success';
?>

最佳答案

更新的 Ajax 代码

 xmlhttp.open("POST", "tst.php", true);
 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xmlhttp.send("email="+e+"&fullname="+fn+"&username="+u+"&password="+ps+"&repass="+rep);

关于javascript - 通过 Ajax 提交输入值时的 PHP 未定义索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21618128/

相关文章:

javascript - 客户端和服务器端编程有什么区别?

php - 将数组的顺序插入数据库

javascript - 隐藏/显示在 Internet Explorer 中不起作用

javascript - jsdoc二维数组

php - 什么是 PDO 上的 bind_result 的等价物

php - 检测空字段 - 问题

javascript - 当用户控件回发时,单选按钮不保留选择

javascript - JQuery - 如何将 li 移动到 ul 中的另一个位置? (交换2里)

javascript - 将名称发布到 php MYSQL 数据库

ajax - selectOneMenu Ajax事件