我正在尝试使用ajax将一个简单的表单插入到我的数据库中(使用insert.php)来练习。 var_dump($email)
下面的位置是空的。脚本一直到这里:
echo "Data for $name inserted successfully!";
问题是变量如上所述为空。
所以我们到那里,但输出是一个空的变量字段,如下所示:
Data for inserted successfully!
我在这里错过了什么吗?
<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>
<?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
//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>
<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
<?php
$db_conx = mysqli_connect("localhost", "user", "pass", "database");
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
exit();
}
?>
答案 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变量。