javascript 如何将空行发送到 php?

how javascript send blank line to php?

我写了这样一个demo:

<!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只是return它得到什么,然后js用大写显示(写这个是因为系统让我写更多的代码细节) 我在 textarea 标签中写了一些文本,比如

write some thing

write other thing

输出为

WRITE SOME THING WRITE OTHER THING

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

WRITE SOME THING

WRITE OTHER THING

我该怎么办?

可以使用NewLine character entity,可以使用以下任意一种表示:

&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>

当您将数据发送到 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>