无法访问php $ _POST值

时间:2015-06-30 07:04:56

标签: php jquery mysql post echo

我有这个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'

3 个答案:

答案 0 :(得分:4)

您不应使用parents()来获取postidparents()将为您提供所有匹配的祖先array。这就是您在服务器端获得Array()的原因。

使用closest()代替parents()closest()将为您提供第一个匹配的祖先。

postid = $(this).closest('.row').attr('id');

答案 1 :(得分:2)

你能否在jQuery代码中检查你是否通过alert或console.log获得正确的postid值?

之后在PHP代码中你可以把这行放在if语句之前然后检查一次。

$favid = mysql_real_escape_string($_POST['favourite']);

答案 2 :(得分:0)

直接父母.parent(' .row');参见示例https://api.jquery.com/parent/

如果是父母的父母,则父母(' unique_class_or_id');参见示例https://api.jquery.com/parents/

最近的id或类使用nearest()函数。参见示例https://api.jquery.com/closest/

var postid = $(this).parent('.row').attr('id');

var postid = $(this).closest('.row').attr('id');