首页 > 解决方案 > 表列数据中不需要的前导空格

问题描述

名为的列是 单击按钮story的文本类型我有一个 jquery ajax 来从该列获取数据 - 在特定的
id

<div id='bstory'></div>

在服务器端我有:

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();
}

在客户端:

$(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);
    });
});

一切正常问题 - 在两个地方
之前都有一个前导空格- 例如,如果列内容是(没有空格) - 如果我写,我得到 (有空格)- 没有空格 我确定没有表格列内的那个空间 请帮忙data
bstoryconsole
lorem ipsum lorem ipsum
data = data.trim()

标签: javascriptphpjquery

解决方案


我将尝试解释您遇到的问题。执行 PHP 代码时,在回显之前和回显输出之后可能会有一些空格、行和其他符号。将被退回。因此,您应该做的事情是确保您在标记之前没有任何空格或线条,<?php并在回应您的响应后立即退出,例如 echo$st->fetchColumn(); exit;或类似的东西。

如果您将结果输出为 JSON 字符串(即将获取的 DB 行转换为 JSON 字符串并将响应标头设置为),则所有这些不便都可以省去application/json;您data实际上将是一个数组或对象,并且在 JSON 解码期间,$.post即使您有空格或其他所谓的空符号,它们也会被自动剥离或忽略。{}对于 JSON 解析器,字符串 is或 it is没有显着差异 {}

我希望我描述得很好。

现在您知道为什么传递 JSON 作为响应比传递简单字符串更好。


推荐阅读