una columna llamada story es un tipo de texto
al hacer clic en un botón, tengo un jquery ajax para obtener datos de esa columna, en una id específica
<div id='bstory'></div>en el lado del servidor tengo:
function a_click($id){ global $db; $sq = "select story from dict where id = :aid limit 1"; $st = $db->prepare($sq); $st->execute([":aid" => $id]); echo $st->fetchColumn(); }en el lado del cliente:
$(document).on('click', '.atitle', function(){ let id = $(this).attr('data-id'); $.post('a_dict_pro.php', {fn: 'a_click', args: [id]}, function(data){ console.log(data); $(bstory).text(data); }); }); Todo funciona
problema: hay un espacio inicial antes data
en ambos lugares - bstory y console
por ejemplo, si el contenido de la columna es lorem ipsum (sin espacio), lorem ipsum (con espacio)
si escribo data = data.trim() - no hay espacio
Estoy seguro de que no hay ese espacio dentro de la columna de la tabla.
por favor ayuda
Intentaré explicarte el problema que tienes. Cuando se ejecuta su código PHP, es posible que tenga algunos espacios vacíos, líneas y otros símbolos antes y después de repetir la salida. El será devuelto. Entonces, lo que debe hacer es asegurarse de no tener espacios o líneas antes de la etiqueta <?php y salir inmediatamente después de hacer eco de su respuesta, es decir, algo como echo $st->fetchColumn(); exit; o similar.
Todos estos inconvenientes podrían evitarse si genera su resultado como una cadena JSON, es decir, convierte su fila DB obtenida en una cadena JSON y establece los encabezados de respuesta en application/json ; Entonces, sus data serán en realidad una matriz u objeto y durante la decodificación JSON que $.post realizará automáticamente, incluso si tiene espacios u otros símbolos vacíos, se eliminarán o ignorarán automáticamente. Para el analizador JSON no hay una diferencia significativa si la cadena es {} o {} ;
Espero haberlo descrito bien.
Ahora sabe por qué es mejor pasar un JSON como respuesta que pasar una cadena simple.