我有这个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'
答案 0 :(得分:4)
您不应使用parents()
来获取postid
。 parents()
将为您提供所有匹配的祖先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');