从用户视图中隐藏div

时间:2014-07-03 15:35:43

标签: php jquery

当表中的行数大于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();
        }
    });
});

5 个答案:

答案 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)

您的代码存在两个问题:

  1. 服务器端代码。以这种方式返回布尔值TRUE或FALSE只会将页面呈现为空白。
  2. jQuery代码逻辑错误:if(true){ case总是被执行(因为值是,总是如此)。
  3. 一个非常简单的修复方法是(未经测试):

    if($num_rows >= 1){
        echo 'true';
    } else {
        echo 'false';
    }
    

    然后,在JS中:

    $.post('php/ManNotify.php', function(data){
        if(data === 'true'){
            $('#notify').show();
        } else {
            $('#notify').hide();
        }
    });
    

    请注意,这未经过优化。