JavaScript 如何向 PHP 发送空行

how javascript send blank line to php?

本文关键字:PHP JavaScript      更新时间:2023-09-26

我写了一个这样的演示:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript">
    window.onload = init;
    function init() {
        var btn = document.getElementById('submit');
        btn.onclick = function() {
            var str = document.getElementById('testText').value;
            alert(str);
            var xmlHttp = new XMLHttpRequest();
            var url = 'test.php?str=' + str;
            xmlHttp.onreadystatechange = function(){
                var str = xmlHttp.responseText;
                document.getElementById('testText').value = str.toLocaleUpperCase();
            };
            xmlHttp.open('GET', url, true);
            xmlHttp.send(null);
        };
    }
</script>
</head>
<body>
    <form action="test.php" method="POST">
        <textarea name="testText" id="testText" cols="30" rows="10"></textarea>
    <input type="button" value="submit" id="submit">
    </form>
</body>
</html>

它向服务器发送一个 GET,php 只是返回它得到的内容,然后 js 用大写字母显示它(写这个是因为系统要求我写更多代码细节)我在标签中写了一些文本textarea例如

write some thing
write other thing

输出为

WRITE SOME THING WRITE OTHER THING

但我想保留空白行,并期望这样的输出

WRITE SOME THING
WRITE OTHER THING

我该怎么办?

当您将数据发送到PHP时,您需要将文本转换为URL格式。

var url = 'test.php?str=' + encodeURIComponent(str);

当您将 PHP 输出为 HTML 文档时,您需要将文本转换为 HTML。

大多数元素不会将空格视为重要,因此您需要将新行转换为换行符元素或执行某种其他类型的格式设置。(一般来说,你想使用更聪明的东西,比如 Markdown 语法,但我会在这个简单的示例中使用 nl2br):

<div>
<?php
    $data = $_GET['str'];
    $safe_data = htmlspecialchars($data);
    $formatted_data = nl2br($safe_data);
    echo $formatted_data;
?>
</div>

或者,如果您要输出到具有大量空格的元素中

<textarea>
<?php
    $data = $_GET['str'];
    $safe_data = htmlspecialchars($data);
    echo $safe_data;
?>
</textarea>

可以使用换行符实体,该实体可以使用以下任一方式表示:

&NewLine;
&#x0000A;
&#10;

这样:

write some thing&NewLine;write other thing

。或:

write some thing&#x0000A;write other thing

。或:

write some thing&#10;write other thing

演示

<textarea>write some thing&NewLine;write other thing</textarea>
<textarea>write some thing&#x0000A;write other thing</textarea>
<textarea>write some thing&#10;write other thing</textarea>