无法访问 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() 来获取postidparents() 会给你所有匹配的祖先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']);

【讨论】:

如果favouriteid,我认为不需要这个,它将是数字 我检查了一下,它正在警告正确的值,就好像它通过 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 值的主要内容,如果未能解决你的问题,请参考以下文章

php 中发送get请求,后台无法获取

Angular HTTP Post - 无法访问返回值[重复]

PHPMailer无法连接到SMTP主机

iis配置了php环境,发布网站无法访问

无法在月球页面中设置 max_post_size php 变量

无法使用 $_FILES 方法访问文件名,PHP [重复]