繁体   English   中英

删除 AJAX 响应中的空白

[英]Removing white-space in AJAX response

我有一个返回0.28的 php 脚本。 然后使用 AJAX 将其提取到 HTML,并插入到跨度中。 问题是,它插入了 5 个空格,并且看起来像是一个换行符。 jQuery 然后将其视为更改,并在没有更改时使用新值更新现有跨度。 看起来空格不是来自 php。我试过:

  • trim() 和 ltrim() php 去除空白
  • 删除 php 退出标签
  • 空白折叠:丢弃; 在 css 中并使用 !important 标签(这没有被读取并且上面有铬黄色警报)
  • 用 jquery 修剪响应
  • 使用 html 笔记来切割空间

转储 php 变量:

string(4) "0.28"

这是我的浏览器返回它的方式

   <span id="response1" style="display: inline;">*5spaceshere*    
   0.28</span>

这是我的脚本

$(function () {
    function update() {
        $.ajax({
            type: "GET",
            url: "balancefetch.php",
            dataType: "html",
            success: function (response) {
                var trimmedResponse = $.trim(response)
                if (trimmedResponse != $("#response1").html()) {
                    $("#response1").fadeOut(200, function () {
                        $("#response1").html(response);
                        $("#response1").fadeIn();
                    });
                } else {}
            }

        });
    }
    setInterval(update, 5000);
    update();
});

还有我的 html

<div id="balance-div"><!--
--><p class="balance">Balance<span id="response1">Loading...</span></p><!--
--></div>

php

$balance = ltrim($balance);
echo $balance;

$balance持有 0.26

因此,经过测试并通过几种方法找到问题所在,找到了这个问题的根源。

为什么不使用trim或RegEx之类的技术来删除空格的主要部分是,因为这会解决当前问题,而不是源,所以这只是一个不好的解决方法,所以找到源是很重要的。

源代码问题出在配置文件中,配置文件里面有一些空格,并且在将其包含在脚本中之后(通过AJAX加载),也包含了空格。

解决方案 :删除配置文件的空格和/或只删除?> PHP-Ending标记。

有关进一步的调试步骤,请查看问题的评论部分。

找到解决方案

问题出在php文件中。 我不应该在我的php文件中的行之间保留任何空格

这是我的php文件,我在评论中指出白色空间

<?php 
require_once '../includes/session.php';
require_once '../includes/functions.php';
require_once '../includes/validation_functions.php';
// white space is in the place of this comment here ! so i removed it and problem was solved
if (isset($_POST['reply_board_textarea'])) {
    $board_id = (int)$_GET['board_id'];
    $comment_id = (int)$_GET['comment_id'];
    $reply = mysql_prep($_POST['reply_board_textarea']);
    $reply_timestamp = time();
    $user_id = (int)$_SESSION['user_id'];

    // INSERT into table
    $query  = "INSERT INTO board_comment_reply_table ( ";
    $query .= "comment_id, board_id, user_id, reply, reply_timestamp";
    $query .= ") VALUES (";
    $query .= " $comment_id, $board_id, $user_id, '$reply', $reply_timestamp";
    $query .= ")";
    $result = mysqli_query($connection, $query);

    $reply_count = board_reply_count($comment_id);

    echo $reply_count;
}

?>

这也发生在我今天(我的 ajax 响应前面总是出现两个换行符)。

找到这个讨论后,我开始审查我的代码。 最后,我在我的代码中包含的 a.inc 文件中找到了 php?> 的结束标记后的两个空格换行符。

非常感谢

使用ob_clean()清除缓冲区中不需要的换行符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM