提问人:user1154295 提问时间:4/24/2012 最后编辑:user1154295 更新时间:4/24/2012 访问量:6880
PHP post 中未定义的索引
Undefined index in PHP post
问:
我采用一个表单并在jquery中进行变量检查,然后将其传递给ajax中的php文件,但是我收到了此通知
注意:未定义的索引:your_name C:\xampp\htdocs\process.php第 3 行 这里出了点问题 注意:未定义的索引:your_email C:\xampp\htdocs\process.php第 7 行
这是我的jquery代码
$(".button").click(function(){
$('.error').hide();
var your_email=$("input#your_email").val();
if(your_email ==""){
$("label#youremail_error").show();
$("input#your_email").focus();
return false;
}
var your_name=$("input#your_name").val();
if(your_name==""){
$("label#yourname_error").show();
$("input#your_name").focus();
return false;
}
var friends_email=$("input#friends_email").val();
if(friends_email==""){
$("label#friendsemail_error").show();
$("input#friends_email").focus();
return false;
}
var friends_name=$("input#friends_name").val();
if(friends_email==""){
$("label#friendsname_error").show();
$("input#friends_name").focus();
return false;
}
var dataString = 'your_email=' + your_email + '&friends_email=' + friends_email + '&your_name=' + your_name + '&friends_name=' + friends_name;
//alert(dataString);
$.ajax({
type: "POST",
url:"process.php",
data: dataString,
success: function(ret) {
alert(ret);
//alert("thank you for signing up");
},
这是我的PHP
<?php
include 'inc/class.phpmailer.php';
if(isset($_POST['your_name'])){
$your_name=$_POST['your_name'];
}
else{
echo "something is wrong with your name having:";
var_dump($_POST['your_name']);
echo "<br/>";
}
if(isset($_POST['your_email'])){
$your_email=$_POST['your_email'];
}
else{
echo "something is wrong with your email having:";
var_dump($_POST['your_email']);
echo "<br/>";
}
if(isset($_POST['friends_name'])){
$friends_name=$_POST['friends_name'];
}
else{
echo "something is wrong with friends name having:";
var_dump($_POST['friends_name']);
echo "<br/>";
}
我不确定为什么我会收到此通知
显然,我的 _POST 美元值没有设置。
我对这个一筹莫展。您知道为什么/何时没有设置 _POST 美元吗?
答:
2赞
Muhammad Hasan Khan
4/24/2012
#1
您首先获得your_name的值,然后检查它是否存在
$your_name=$_POST["your_name"]; <--- this line should be inside an if isset
if(!isset($_POST['your_name'])){
执行如下操作
if (isset($_POST['your_name'])) {
$your_name = $_POST['your_name'];
// do whatever here
}
评论
0赞
user1154295
4/24/2012
谢谢 @Hasan Khan,我的帖子变量不存在,当我做var_dump时,一切都出现 NULL。我对此一筹莫展。你知道为什么 _POST 美元指数不存在吗?
0赞
Muhammad Hasan Khan
4/24/2012
它不存在,因为它可能没有被提交?检查发布这些变量的表单。确保名称相同。
0赞
ieatbytes
4/24/2012
#2
在您的 JS 代码中没有看到任何问题,但您的 PHP 代码有 Lil 缺陷
<?php
include 'inc/class.phpmailer.php';
//it can be like that or
if(!isset($_POST['your_name'])){
echo "something is wrong here";
}
else{
$your_name=$_POST["your_name"];
}
注意:PHP错误处理应该正确完成,或者你可以禁用php警告
1赞
Ahmed Muhammad
4/24/2012
#3
$_POST['your_name'] 不能分配给变量 $your_name 当 “your_name” 未发布时,因为它不存在。您必须首先检查它是否存在,然后将其分配给变量 ..代码应如下所示:
if (isset($_POST['your_name'])) {
$your_name = $_POST['your_name'];
}
else {
echo "something is wrong here";
}
评论
0赞
user1154295
4/24/2012
谢谢穆罕默德@Ahmed:-)你明白为什么它不存在吗?
0赞
Ahmed Muhammad
4/25/2012
当您提交表格时......如果未提交“your_name”,则不会将其添加到 $_POST 数组中
评论
var_dump($_POST);
---总是用来查看变量中实际存在的内容。知识 - 这就是程序员与算命先生的区别var_dump()