AJAX向数据库发送null到PHP脚本

时间:2015-04-20 06:39:59

标签: php ajax forms

我正在尝试使用ajax将一个简单的表单插入到我的数据库中(使用insert.php)来练习。 var_dump($email)下面的位置是空的。脚本一直到这里:

echo "Data for $name inserted successfully!";

问题是变量如上所述为空。

所以我们到那里,但输出是一个空的变量字段,如下所示:

Data for inserted successfully!

我在这里错过了什么吗?

的index.php

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!-- The ajax/jquery stuff -->
<script type="text/javascript">

$(document).ready(function(){
//Get the input data using the post method when Push into mysql is clicked .. we pull it using the id fields of ID, Name and Email respectively...
$("#insert").click(function(){
//Get values of the input fields and store it into the variables.
var name=$("#name").val();
var email=$("#email").val();

//use the $.post() method to call insert.php file.. this is the ajax request
$.post('insert.php', {name: name, email: email},
function(data){
$("#message").html(data);
$("#message").hide();
$("#message").fadeIn(1500); //Fade in the data given by the insert.php file
});
return false;
});
});
</script>
</head>
<body>
<form>
<label>Name: </label> <input id="name" type="text" />
<label>E-Mail: </label> <input id="email" type="text" />
</form>
<a id="insert" title="Insert Data" href="#">Push into mysql</a>
 <!-- For displaying a message -->

<div id="message"></div>
</body>
</html>

insert.php

 <?php
//Configure and Connect to the Databse
 include "db_conx.php";
 if (!$db_conx) {
 die('Could not connect: ' . mysqli_error());
 }
 //Pull data from home.php front-end page
 $name=$_POST['name'];
 $email=$_POST['email'];
 echo "<pre>";
var_dump($email);
echo "</pre><br>";
 //Insert Data into mysql          INSERT INTO best_rate (name,email) 
$query= "INSERT INTO best_rate(name,email) VALUES('$name','$email')";
$result = mysqli_query($db_conx,$query);
if($query){
echo "Data for $name inserted successfully!";
}
else{ echo "An error occurred!"; }
?>

更新PHP#2

<?php
//Configure and Connect to the Databse
 include "db_conx.php";
 if (!$db_conx) {
 die('Could not connect: ' . mysqli_error());
 }
 //Pull data from home.php front-end page
 $name=$_POST['myname'];
 $email=$_POST['myemail'];
 echo "<pre>";
var_dump($email);
echo "</pre><br>";
 //Insert Data into mysql          INSERT INTO best_rate (name,email) 
$query= "INSERT INTO best_rate(name,email) VALUES('$name','$email')";
$result = mysqli_query($db_conx,$query);
if($query){
echo "Data for $name inserted successfully!";
}
else{ echo "An error occurred!"; }
?>

HTML#2

<html>
    <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <!-- The ajax/jquery stuff -->
    <script type="text/javascript">

    $(document).ready(function(){
    //Get the input data using the post method when Push into mysql is clicked .. we pull it using the id fields of ID, Name and Email respectively...
    $("#insert").click(function(){
    //Get values of the input fields and store it into the variables.
    var name=$("#name").val();
    var email=$("#email").val();

    //use the $.post() method to call insert.php file.. this is the ajax request
    $.post('insert.php', {myname: name, myemail: email},
    function(data){
    $("#message").html(data);
    $("#message").hide();
    $("#message").fadeIn(1500); //Fade in the data given by the insert.php file
    });
    return false;
    });
    });
    </script>
    </head>
    <body>
    <form>
    <label>Name: </label> <input id="name" type="text" name="myname"/>
    <label>E-Mail: </label><input id="email" type="text" name="myemail"/>
    </form>
    <a id="insert" title="Insert Data" href="#">Push into mysql</a>
     <!-- For displaying a message -->

    <div id="message"></div>
    </body>
    </html>

表结构

===============================================
id | name | email

db_conx.php

<?php
$db_conx = mysqli_connect("localhost", "user", "pass", "database");
if (mysqli_connect_errno()) {
    echo mysqli_connect_error();
    exit();
}
?>

4 个答案:

答案 0 :(得分:4)

您已为字段指定了name属性

<input id="name" type="text" />

改为使用

<input id="name" type="text" name="myname"/>

然后在你的php文件中使用这样的

$name=$_POST['myname'];

答案 1 :(得分:1)

我可以看到你有发布方法问题所以我们可以使用$ .get而不是$ .post并在$ _GET上接收数据[&#34; name&#34;]

我认为现在这是正确的解决方案。

谢谢

答案 2 :(得分:0)

我检查了你的代码并正常工作,因为我可以看到数据库连接可能存在一些问题或与mysql有关。您的代码正常工作无需在HTML中提供名称或任何其他参数,因为您已在jquery中发布并给出变量。

如果您需要更多详细信息,您需要提供与mysql相关的配置文件和表格结构,以便我可以正确检查。

由于

答案 3 :(得分:0)

听起来我输入的值并没有传递给php脚本来插入它们。

我在你的代码中注意到你传递了一个包含这些值的对象:

$.post('insert.php', {myname: name, myemail: email},

我确信您正在设置属性的名称(即.myname)。根据我的理解,javascript将myname作为变量而不是名称进行interpriting。正确的代码是:

$.post('insert.php', {'myname': name, 'myemail': email},

然后,这将正确设置要在PHP代码中使用的POST变量。