PHP AJAX通知,如果MySQL查询没有返回任何行

时间:2017-04-07 15:48:20

标签: php jquery mysql ajax

情况

我有一个工作脚本向get_code.php发送ajax请求。此脚本从主页面index.php运行。 get_code.php脚本查询我的MySQL数据库,然后将数据发送回index.php

当前代码

index.php中的jQuery

<script type="text/javascript">
$("#CMTCode").click(function(){
    var cde = $("#cmtcodeinput").val();
        $.ajax({
            method:'POST',
            url:'get_code.php',
            data: {va_code:cde},
            dataType: 'json',
            success: function(output_string){
                    $('#rtable').append(output_string);
                    $("#cmtcodeinput").val('');
                    var prc = $(".price:last");
                    prc.focus();
            }
        });
});    
</script>

PHP脚本 get_code.php

<?php
include('dbc.php');
$code = $_POST['va_code'];
$cq = mysql_query("SELECT * FROM variants where va_code='$code'")or die(mysql_error());
  if(!$cq){
mysql_close();
echo json_encode('There was an error running the query: ' . mysql_error());
  }elseif(!mysql_num_rows($cq)){
mysql_close();
echo json_encode('No results returned');
  }else{
$output_string = '';
$output_string .= '<tr>';
while($row = mysql_fetch_assoc($cq))
{        
     $output_string .= '<td>'.$row['cmtcost'].'</td>';
//etc. etc. lots more output here
}
     $output_string .= '</tr>';
}
mysql_close();
echo json_encode($output_string);
?>

问题

但是,如果未找到查询结果,则页面上不会返回任何内容来通知用户。理想情况下,我想打开模态,或显示div,我可以使用用户输入的数据。我无法为我的生活做好如何检查$cq是否返回任何结果,如果是,那么在index.php上显示某些内容,就像通知中所说的那样&#39;您的代码找不到&#39;。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以返回结果标志。这是一个很好的逻辑,易于理解。

如果没有找到行:

<!DOCTYPE html>
<html>
<head>

<title>Expandable Text Area</title>

<style>
textarea {
width: 200px;
height:15px;
line-height:15px;
min-width: 200px;
max-width: 300px;
transition: width 0.25s;
resize:none;
overflow:hidden;
}
</style>

<script> 
$('textarea').on('keydown', function(e){
if(e.which == 13) {e.preventDefault();}
}).on('input', function(){
$(this).height(1);
var totalHeight = $(this).prop('scrollHeight') - 
parseInt($(this).css('padding-top')) - parseInt($(this).css('padding-bottom'));
$(this).height(totalHeight);
});
</script>

</head>

<body>

<textarea placeholder="Autosize" data-autosize-input='{ "space": 40 }'>
</textarea>

</body>
</html>

如果发现了一些代码:

die(json_encode(['result' => false, 'error' => 'No code was found']));

在js:

die(json_encode(['result' => true, 'output' => $output_string]));

希望它有所帮助。