Tengo un script de trabajo que envía una solicitud ajax a get_code.php . Este script se ejecuta desde la página principal: index.php . El script get_code.php consulta mi base de datos MySQL en busca de una fila y luego envía los datos a index.php .
jQuery en index.php
<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>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); ?> Sin embargo, si no se encuentran resultados para la consulta, no se devuelve nada en la página para notificar al usuario. Idealmente, me gustaría abrir un modal o mostrar un div en el que pueda usar los datos ingresados por el usuario. Simplemente no puedo resolver por mi vida cómo verificar si $cq no arroja resultados, y si es así, mostrar algo en index.php como una notificación que dice 'No se encontró su código'.
Agradecido de cualquier ayuda
Podría devolver un indicador de resultado. Esta es una buena lógica y fácil de entender.
Si no se encontró ninguna fila:
die(json_encode(['result' => false, 'error' => 'No code was found']));Si se encuentra algún código:
die(json_encode(['result' => true, 'output' => $output_string]));Y en js:
... success: function(data){ if (!data.result) { alert(data.error); } else { $('#rtable').append(data.output); $("#cmtcodeinput").val(''); var prc = $(".price:last"); prc.focus(); } } ...Espero eso ayude.