2014-02-07 2 views
1

Я пытаюсь отправить данные в базу данных, но получаю Undefined Index error.PHP Undefined Index при отправке значений ввода через 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'; 
?> 
+1

сделать 'var_dump/print_r' на '$ _POST' - что он показывает – helion3

+0

Пустой. Array() – Sam

+0

Проверьте вкладку «Сеть» инструментов разработчика, чтобы узнать, какие параметры вы отправляете. – Barmar

ответ

1

Обновленный 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); 
1

Добавить

 xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

выше

 xmlhttp.onreadystatechange = function(){