$ _POST数组为空,我得到了未定义的变量错误

时间:2014-11-05 19:31:21

标签: php mysql forms

很抱歉再次询问,但我检查了几乎所有有关该主题的问题并且仍然无法解决。这是我的form.php和creditform.php

Edit1。将.get更改为.post

Edit2。我收到了未定义变量的错误" name" "电子邮件" "地址" "收入" creditform.php 等等(简称所有这些) 我想要做的只是将所有输入插入到db。中的表中。

HTML

<!-- End crumbs-->
            <div class="container wrap wow fadeInUp">
            <div class="row">
            <div class="col-sm-5 col-md-6 left-app">
            <form id="form" action="php/creditform.php" method="post">
                <input type="text" placeholder="Name" name="name" required>
                <input type="email" placeholder="Email"  name="email" required>
                <input type="text" placeholder="Address"  name="address" required>
                <input type="number" placeholder="Monthly income before taxes"  name="income" required>
                <input type="number" placeholder="Amount Needed"  name="amount_needed" required>
                <input type="number" placeholder="Phone"  name="phone" required>
             <div class="row">
             <div class="container">
                <input type="submit" name="submit" value="Submit" class="button"></div></div>
             <div id="result"></div>  
            </form> 
            </div>
                <script>
                $(document).ready(function($) {
                   'use strict';

                $('#form').submit(function(event) {  
                   event.preventDefault();  
                   var url = $(this).attr('action');  
                   var datos = $(this).serialize();  
                   $.post(url, datos, function(resultado) {  
                   $('#result').html(resultado);  
                   });  
               });
                </script>

form.php的

<?php

include('db.config.php');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $name = $email = $address = $income = $amount_needed = $phone = '';

if(isset($_POST['submit'])){

   $name = addslashes($_POST['name']);
   $email = addslashes($_POST['email']);
   $address = addslashes($_POST['address']);
   $income = addslashes($_POST['income']);
   $amount_needed = addslashes($_POST['amount_needed']);
   $phone = addslashes($_POST['phone']);

// check form fields
if(empty($name)){
    $error .= 'Enter name <br />';
}
if(empty($email)){
    $error .= 'Enter email <br />';
}
// check if errors exist
if(!empty($error)){
    echo $error;    
} else {
    // process form as normal   

    $sql = "INSERT INTO `" . DBN . "`.`creditapp` (`name`, `email`, `address`, `income`, `amount_needed`, `phone`) VALUES ('$name', '$email', '$address', '$income', '$amount_needed', '$phone')";
    $db->Query($sql);
}
}
} 
print_r($_POST);

?>

CREDITFORM.PHP

<?php
if(isset($_POST['submit'])){

   $name = $_POST['name'];
   $email = $_POST['email'];
   $address = $_POST['address'];
   $income = $_POST['income'];
   $amount_needed = $_POST['amount_needed'];
   $phone = $_POST['phone'];
}
print_r($_POST);


?>
很明显,我错过了什么,请纠正我...... 谢谢你的时间

4 个答案:

答案 0 :(得分:3)

您需要向POST数组发送$_POST个请求才能包含任何内容。

$.get(url, datos, function(resultado) {  
    $('#result').html(resultado);  
});

这会发送GET请求(请检查$_GET)。您想在此处使用$.post

$.post(url, datos, function(resultado) {  
    $('#result').html(resultado);  
});

答案 1 :(得分:2)

以下是一个事件对Php 文件的简单 Ajax调用:点击按钮。

在您的示例中,您必须使用POST方法,因为您使用:

$_POST['something'];

Javascript客户端:

 $("body").on("click", "#mybutton", function() {
            var mydata = $("#form").serialize();
            $.ajax({
                type: "POST",
                url: "/api/api.php",
                data: {data : mydata},
                timeout: 6e3,
                error: function(a, b) {
                    if ("timeout" == b) $("#err-timedout").slideDown("slow"); else {
                        $("#err-state").slideDown("slow");
                        $("#err-state").html("An error occurred: " + b);
                    }
                },
                success: function(a) {
                    var e = $.parseJSON(a);
                    if (true == e["success"]) {
                        $("#result").html(e['message']);
                        // here is what you want, callback Php response content in Html DOM
                    }
                }
            });
            return false;
        });

接下来在您的Php代码中,只需在任何成功函数之后执行:

if ($result) {
            echo json_encode(array(
                'success' => true,
                'msg' => "Nice CallBack by Php sent to client Side by Ajax Call"
            ));
        }

答案 2 :(得分:1)

好的,我在ajax-json-php上练习了更多,最后这是我的解决方案和我的最新代码。

感谢所有的答案和建议。希望这对某人也有帮助。

仍然愿意改进任何建议。

<?php

include('db.config.php');

if(isset($_POST['submit'])){


$name = addslashes($_POST['name']);
$email = addslashes($_POST['email']);
$address = addslashes($_POST['address']);
$income = addslashes($_POST['income']);
$amount_needed = addslashes($_POST['amount_needed']);
$phone = addslashes($_POST['phone']);

// process form as normal   

$sql = "INSERT INTO `" . DBN . "`.`creditapp` (`name`, `email`, `address`, `income`, `amount_needed`, `phone`) VALUES ('$name', '$email', '$address', '$income', '$amount_needed', '$phone')";
$db->Query($sql);

die();

<div class="container wrap wow fadeInUp">
     <div class="row">
     <div class="col-sm-5 col-md-6 left-app">
        <form id="form" action="creditapp.php" method="post">
          <input type="text" placeholder="Name" name="name" id="name" required>
          <input type="email" placeholder="Email"  name="email" id="email" required>
          <input type="text" placeholder="Address"  name="address" id="address" required>
          <input type="text" placeholder="Monthly income before taxes" id="income" name="income" required>
          <input type="text" placeholder="Amount Needed"  name="amount_needed" id="amount_needed" required>
          <input type="text" placeholder="Phone"  name="phone" id="phone" required>
        <div class="row">
        <div class="container">
          <input type="submit" name="submit" value="Submit" class="button sub"></div>
        </div>
        </form> 
        </div>

   <script>
   $(document).ready(function() {

   $('.sub').click(function(e){
       e.preventDefault();
        var name = $('#name').val(),
            email = $('#email').val(),
            address = $('#address').val(),
            income = $('#income').val(),
            amount_needed = $('#amount_needed').val(),
            phone = $('#phone').val();


        $.ajax({
            url: "creditapp.php",
            type: "POST",
            data: {
                name: name,
                email: email,
                address: address,
                income: income,
                amount_needed: amount_needed,
                phone: phone,
                submit: "submit"
            }

            }).done(function(msg){
              $('.right-info').html('<pre>' + msg + '</pre>');
            })
       })
   });
</script>

答案 3 :(得分:0)

你遇到的问题是你的javascript。您等待提交,而不是执行ajax GET 请求,您需要 POST

<script>
            $(document).ready(function($) {
               'use strict';
            $('#form').submit(function(event) {  
               event.preventDefault();  
               var url = $(this).attr('action');  
               var datos = $(this).serialize();  
               $.post(url, datos, function(resultado) {  
               $('#result').html(resultado);  
               });  
           });
            </script>