当表中的行数大于1时,我想返回true,并在jquery代码中显示带有jquery的div。另外,当行数为零时返回false并隐藏div,如图所示在下面的代码中.php代码正在执行并返回一个正确的值,但jquery代码既没有显示也没有隐藏div。我需要在返回的值为true时显示div,并在返回的值为false时隐藏div;
**php code** php code for retrieving the number of rows from a table
<?php
require'php/connection.php';//a file for connecting to the database
$user_name=getUserField('user_name');//function for getting the name of the user in session
$query="select `order_id` from `inbox` where `buyer_name`='$user_name'";
$query_run=mysql_query($query);
$num_rows=mysql_num_rows($query_run);
if($num_rows >= 1) {
return true;
} else if($num_rows == 0) {
return false;
}
?>
jquery code 用于隐藏或显示div的Jquery代码
$(document).ready(function() {
$.post('php/ManNotify.php',{},function(data){
if(true) {
$('#notify').show();
} else if(false) {
$('#notify').hide();
}
});
});
答案 0 :(得分:1)
你是否意识到你的if语句是读,
if(true) ..
else if(false) ...
隐藏永远不会执行。这是你的问题吗?
答案 1 :(得分:1)
在PHP中使用AJAX调用时,您应该echo
值而不是返回它。像这样修改你的PHP代码:
<?php
require'php/connection.php';//a file for connecting to the database
$user_name=getUserField('user_name');//function for getting the name of the user in session
$query="select `order_id` from `inbox` where `buyer_name`='$user_name'";
$query_run=mysql_query($query);
$num_rows=mysql_num_rows($query_run);
if($num_rows >= 1){
echo json_encode(array("status" => true));
} else if($num_rows == 0) {
echo json_encode(array("status" => false));
}
exit;
?>
您还需要相应地修改您的JavaScript。现在,if(true)
将始终在返回时执行。像这样修改它:
// Shorthand for $(document).ready
$(function(){
$.post('php/ManNotify.php',{}, function(data) {
// JavaScript truthy/falsy will take care of the statement
if(data.status) {
$('#notify').show();
} else {
$('#notify').hide();
}
});
});
修改强>
正如 @mplungjan 在下面的评论中指出的那样,回调中的JavaScript可以简化为:$('#notify').toggle(data.status);
。生成的JavaScript将是:
// Shorthand for $(document).ready
$(function(){
$.post('php/ManNotify.php',{}, function(data) {
$('#notify').toggle(data.status);
});
});
感谢 @mplungjan 提供建议。
答案 2 :(得分:0)
$(document).ready(function(){
$.post('php/ManNotify.php',{},function(data){
if(data == 'true'){
$('#notify').show();
}else if(data == 'false')
{
$('#notify').hide();
}
});
});
答案 3 :(得分:0)
$(document).ready(function(){
$.post('php/ManNotify.php',{},function(data){
if(data == "true"){
$('#notify').show();
}else if(data == "false")
{
$('#notify').hide();
}
});
});
答案 4 :(得分:0)
您的代码存在两个问题:
if(true){
case总是被执行(因为值是,总是如此)。一个非常简单的修复方法是(未经测试):
if($num_rows >= 1){
echo 'true';
} else {
echo 'false';
}
然后,在JS中:
$.post('php/ManNotify.php', function(data){
if(data === 'true'){
$('#notify').show();
} else {
$('#notify').hide();
}
});
请注意,这未经过优化。