jquery文本区域问题

时间:2010-03-09 12:34:32

标签: php jquery ajax textarea

我有一个文字区域

        <textarea name="message" id="message" class="text_field" style="height:200px; width:500px"></textarea>

如果我在文本区域中输入数据

        hello
        this is my test message

        bye
        'abc'

我使用以下语句从文本区域获取数据

     var message = $('#message').attr('value');

我将此值传递给其他php文件,如

      var data = {message:message};
 $.ajax({
 type: "POST",
 url: "show.php",
 data: data,
 etc

当我看到显示的post值firebug中的数据时,我输入数据(使用新的行和空格等) 并在PHP文件中

          $message=$_POST['message'];

           $Content = file_get_contents($temp_page);
           $Content = str_replace('%%a%%', $message, $Content);

现在我使用

             echo $Content

我在一行中得到的所有文字都不完全我在文本区域输入...

          hello this is my test message bye 'abc'

由于

5 个答案:

答案 0 :(得分:2)

这是因为浏览器不会在textareas或其他定义为打印输出的元素之外打印换行符,例如<pre>

您需要使用echo nl2br($Content);替换带有<br />元素的换行符,这相当于(x)HTML中的换行符。

答案 1 :(得分:1)

如果您直接回复浏览器,请尝试查看该页面的来源。您可能会发现浏览器将文本解释为HTML,在这种情况下,它将折叠您的所有空格和换行符。在理论上,查看源应该显示您最初输入的内容,包括换行符,额外空格等。

答案 2 :(得分:0)

想想如果你只输入一些HTML源代码会发生什么:

<p>
  Hello there.
     This is 
  my

       HTML

  source, and I hope

                     you

      like it.
</p>

这是什么样的?是的 - 浏览器会将所有这些换行视为简单的空格,并将其全部展开,因为它会显示非空白字符。

当您转储textarea内容时(顺便说一句:获取$('#whatever').val()的值),您正在做同样的事情。如果你想保留格式,那么,这可能是一件令人头疼的事。您可以尝试将其放在<pre>块中,或者您可能必须明确查找换行符并将其转换为<br>元素。

编辑:请参阅@ Tatu的答案,了解您想要的php函数。

答案 3 :(得分:0)

如果您右键单击并单击“查看源”(或某些近似的等效项),您应该会看到格式正确的文本。这是由于HTML的工作方式。即使您编写以下HTML:

hello
this is my test message

bye
'abc'

输出将是内联的。您必须在每行之后写入,或将文本包装在&lt; pre&gt;中。标签

答案 4 :(得分:0)

也许你可以试试:

nl2br($Content);