无法访问 php $_POST 值
Posted
技术标签:
【中文标题】无法访问 php $_POST 值【英文标题】:Can't access php $_POST value 【发布时间】:2015-09-16 20:41:23 【问题描述】:我有这个 jquery 函数,它将 div 的 id 发送到 php 文件,然后发送到 mysql 表。这很好用,但是我无法访问 php 文件中 $_POST 变量的值。我试图用 print_r($favid)、var_dump($favid) 等来揭示它,但它们都返回类似 'array ()' 或 'NULL' 之类的东西。它正在工作,因为它在 mysql 表中更新得很好。
所以我的问题是,为什么 mysql 表正在接收值,但在 php 文件中尝试访问它时它是空的?
我对此很陌生,任何帮助将不胜感激。 谢谢。
jquery:
$("#button").click(function()
postid = $(this).parents('.row').attr('id');
$.ajax(
url: "favourites.php",
method: "POST",
data:
favourite: postid
,
success: function(result)
alert('success');
);
);
php:
session_start();
if(isset($_SESSION['id']) AND isset($_POST['favourite']))
$user = mysql_real_escape_string($_SESSION['id']);
$favid = mysql_real_escape_string($_POST['favourite']);
$query = mysql_query("SELECT * FROM ajaxfavourites WHERE user=$user AND favid=$favid");
$matches = mysql_num_rows($query);
// If it is not favourited, add as favourite
if($matches == '0')
mysql_query("INSERT INTO ajaxfavourites (user, favid) VALUES ('$user', '$favid')");
// Instead, if it is favourited, then remove from favourites
if($matches != '0')
mysql_query("DELETE FROM ajaxfavourites WHERE user=$user AND favid=$favid");
上述两项工作,但我无法像下面这样获得 $favid 的价值......
php:
echo $favid; // shows nothing
echo var_dump($favid); // shows 'NULL'
echo print_r($favid); // shows '1' it should be '3'
【问题讨论】:
【参考方案1】:您不应使用parents()
来获取postid
。 parents()
会给你所有匹配的祖先array
。这就是您在服务器端收到 Array()
的原因。
使用closest()
而不是parents()
。 closest()
会给你第一个匹配的祖先。
postid = $(this).closest('.row').attr('id');
【讨论】:
@jm1175 尝试调试var_dump($_POST)
【参考方案2】:
您能否通过 alert 或 console.log 检查在 jQuery 代码中您是否获得了正确的 postid 值
在php代码中你能不能把这行放在if语句之前,然后检查一次。
$favid = mysql_real_escape_string($_POST['favourite']);
【讨论】:
如果favourite
是id
,我认为不需要这个,它将是数字
我检查了一下,它正在警告正确的值,就好像它通过 php 隐藏但随后在 mysql 表中显示出来。我尝试将“$favid = mysql_real_escape_string($_POST['favourite']);”放在 if 语句之外,现在“var_dump($favid)”显示:string(0)“”?【参考方案3】:
直接父级 .parent('.row');见例子https://api.jquery.com/parent/
如果是parent的parent,则为parents('unique_class_or_id');见例子https://api.jquery.com/parents/
最近的 id 或类使用最接近()函数。见例子https://api.jquery.com/closest/
var postid = $(this).parent('.row').attr('id');
或
var postid = $(this).closest('.row').attr('id');
【讨论】:
你能补充一些解释吗,为什么要使用这个代码? 使用 parent() 函数直接获取父级。如果在这种情况下它在父母之前,父母('unique_class_or_id')。如果获取最近的获取最近的()函数。 用之前的评论更新你的答案。你的答案转到low quality post,人们可以投票删除你的答案,因为你只提供了代码没有解释。你应该在回答时加入一些解释。以上是关于无法访问 php $_POST 值的主要内容,如果未能解决你的问题,请参考以下文章
Angular HTTP Post - 无法访问返回值[重复]