【问题标题】:<br/> not working on text from a mysql query<br/> 不能处理来自 mysql 查询的文本
【发布时间】:2017-12-15 23:22:38
【问题描述】:

我正在开展一个项目,其中人工智能将文本推送到 MySQL 数据库。然后,我们想展示网页上正在进行的写作。我们仍在努力。

我们正在获取数据并定期检查数据库是否有新条目。问题是,我们想用空格分隔每个文本并尝试使用 &lt;br/&gt;&lt;p&gt; 但它不起作用,它似乎是“只是”文本并显示为这样。

我们的代码:

<head>
    <script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <style type="text/css"> 
        #myTable{ 
           width:"90%";
           min-width: 250px;
           word-wrap:break-word;
           overflow:visible; 
           position:absolute;
           border:solid 0px;
           top:250px;
           left:720px;
           right:720px;
           bottom:50px;
           font-family:"Times New Roman", Times, serif;
           text-align:justify
        } 
   </style> 

</head>
<body>
    <div id="myTable"> <div>

    <script type="text/javascript">  
        var skip = 0;
        function get_data(index) {
            $.ajax({
                url : 'getData.php',
                type : 'POST',
                data: ({"skip":skip}),
                success : function(data) { 
                    if(data && data.trim()!='') {
                        skip = skip+1;
                        showText("#myTable", data, 0, 5); 
                    }
                    else {
                        setTimeout(function () { get_data(skip); }, 30000);
                    }
                },
                error : function(request,error)
                {
                    alert("Request error : "+JSON.stringify(request));
                }
            });
        }

        function showText(target, message, index, interval) {   
            if (index < message.length) {
                $(target).append(message[index++]);
                setTimeout(function () { showText(target, message, index, interval); }, interval);
            }
            else {
                get_data(skip);
            }
        }

        //var period = 10000; //NOTE: period is passed in milliseconds
        get_data(skip);
        //setInterval(page_refresh, period); 
    </script>

</body>

【问题讨论】:

  • “不工作”是什么意思?它在做什么不受欢迎?
  • 你的代码里面既没有

    也没有
    ,你在哪里插入呢?

  • 或/和
    标签来自通过 MySQL 请求显示的数据,不在此代码中。此代码用于设置文本在屏幕上的显示方式。

标签: javascript html mysql json


【解决方案1】:

分析您的http://xx.xxx.xx.xxx/getData.php 显示没有任何&lt;br /&gt; 标记,而是\n 在您的输出中。

在您的 JS 代码中,您需要将 \n 替换为 &lt;br /&gt;.#

我假设message[index++] 持有您的文本,所以:

$(target).append(message[index++].replace("\n", "<br />");

【讨论】:

  • 不要那样做。相反,使用 CSS white-space: pre-wrap 让浏览器注意空格和换行符。
  • 绝对同意不使用

    标签同样可以接受。您可以在

    Append

    前面加上“\n”替换为“

  • 我不能只在AI推送的文本中添加一个
    并通过getData.php显示?
  • 请向我们展示您尝试执行此操作的代码,我们将能够提供帮助。虽然我建议您将数据存储为数据,并仅在呈现时添加用于呈现的标记,这样数据就可以用于多种用途。
  • @MathieuArbezHermoso,你也可以这样做。 @NiettheDarkAbsol 为什么不使用&lt;br /&gt;,因为它有效且符合xml?
【解决方案2】:

在 SQL 中,如果您将 CHAR(13) 联系到任何字符串,它将给您一个换行符。

DECLARE @textBreaking NVARCHAR(50)
SET @textBreaking = 'FIRST LINE.' + CHAR(13) + 'FIRST LINE.'
SELECT @textBreaking

选择此块将返回以下内容:

第一行。
第二行。


从 SQL 中获取文本并将其显示在网页上应该可以实现您想要的。

【讨论】:

    【解决方案3】:

    您应该尝试在元素标签&lt;div&gt;&lt;p&gt; 或其他标签内附加消息, $(target).append('&lt;p&gt;' +message[index++]+ '&lt;/p&gt;');

    然后为该标签设置一个样式,使用边距或填充来分隔每条消息。

    p {
      margin-bottom:15px;
      margin-top:15px;
      //or
      padding-bottom:15px;
      padding-top:15px;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-04
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2014-10-24
      相关资源
      最近更新 更多