Php 将多行文本从数据库加载到TextArea

Php 将多行文本从数据库加载到TextArea,php,javascript,mysql,Php,Javascript,Mysql,我在MySql数据库(VARCHAR 255)中保存了一些多行文本。当我加载它,并使用标准php函数“nl2br”处理它时,它的响应很好(多行)。但是,当我从数据库加载多行文本时,将其设置为“nl2br”,然后将其发送到javascript(这样它就会显示在textarea中),它就不会显示了!怎么了 echo "<SCRIPT>FillElements('".$subject."','".$text."');</SCRIPT>"; 换行标记()不会在中产生实际的新行

我在MySql数据库(VARCHAR 255)中保存了一些多行文本。当我加载它,并使用标准php函数“nl2br”处理它时,它的响应很好(多行)。但是,当我从数据库加载多行文本时,将其设置为“nl2br”,然后将其发送到javascript(这样它就会显示在textarea中),它就不会显示了!怎么了

echo "<SCRIPT>FillElements('".$subject."','".$text."');</SCRIPT>";
换行标记(

)不会在
中产生实际的新行

不过,您可以将“真正的”换行符(
\n
)传递给您的

我为此而创作


编辑:对于更新的
FillElements
code:

$subject = "String\nWith\nMultiple\nLines";

printf('<script type="text/javascript">FillElements(%s)</script>',
   json_encode($subject)
);
$subject=“字符串\n带\n多行\n”;
printf('FillElements(%s)',
json_编码($subject)
);
换行标记(

)不会在
中产生实际的新行

不过,您可以将“真正的”换行符(
\n
)传递给您的

我为此而创作


编辑:对于更新的
FillElements
code:

$subject = "String\nWith\nMultiple\nLines";

printf('<script type="text/javascript">FillElements(%s)</script>',
   json_encode($subject)
);
$subject=“字符串\n带\n多行\n”;
printf('FillElements(%s)',
json_编码($subject)
);

我猜您的HTML源代码如下所示:

<script>FillElements("foo","foo
bar
baz");<script>
FillElements(“foo”,“foo”
酒吧
(baz);;
对吗


在JavaScript中,字符串不能跨越多行…

我猜您的HTML源代码如下所示:

<script>FillElements("foo","foo
bar
baz");<script>
FillElements(“foo”,“foo”
酒吧
(baz);;
对吗


在JavaScript中,字符串不能跨越多行…

textarea
s实际上不会以与输入元素相同的方式将内容存储在属性中,如
value
。它们实际上将内容存储在
标记之间。这意味着内容在文档中实际上被视为CDATA

<textarea>
    This is my Content
</textarea>

这是我的内容
生成一个以“这是我的内容”作为内容的文本区域

这意味着您不能使用代码来更改textarea的内容。您必须更改textarea的innerHTML属性。我在这里举了一个简单的例子:


另一方面,既然在创建页面时使用PHP填充字段,为什么不只是在HTML标记中填充数据,这似乎是一个很长的过程

此外,由于您似乎没有使用它,您是否看到过[jQuery][1]它将许多内容抽象出来,因此,您可以使用CSS选择器,只需编写
$(“#id”)
来获取相同的元素,而不用键入
document.getElementById(“the#id”)
。您还可以获得大量有用的函数,使编写javascript mucxh变得更容易


[1] :jQuery

textarea
s实际上不会以与输入元素相同的方式将内容存储在属性中,如
value
。它们实际上将内容存储在
标记之间。这意味着内容在文档中实际上被视为CDATA

<textarea>
    This is my Content
</textarea>

这是我的内容
生成一个以“这是我的内容”作为内容的文本区域

这意味着您不能使用代码来更改textarea的内容。您必须更改textarea的innerHTML属性。我在这里举了一个简单的例子:


另一方面,既然在创建页面时使用PHP填充字段,为什么不只是在HTML标记中填充数据,这似乎是一个很长的过程

此外,由于您似乎没有使用它,您是否看到过[jQuery][1]它将许多内容抽象出来,因此,您可以使用CSS选择器,只需编写
$(“#id”)
来获取相同的元素,而不用键入
document.getElementById(“the#id”)
。您还可以获得大量有用的函数,使编写javascript mucxh变得更容易



[1] :jQuery

如何将其发送到JavaScript?很简单,如下所示:echo“FillElements”(““$subject.”,“$text.”);”$在此之前,文本是nl2br ed。如果文本不是多行的,则它可以工作,否则它就不会工作work@guest我假设nl2br ed表示字符串中包含

部分。。。对吗?很可能,textarea中的文本用户类型存储在数据库中,当我尝试从数据库加载它并在textarea中再次显示它时,它将无法工作。我相信“nl2br”会将“\n”转换为“
”。如何将其发送到JavaScript?很简单,如下所示:echo“FillElements”(“$subject.”,“$text.”)$在此之前,文本是nl2br ed。如果文本不是多行的,则它可以工作,否则它就不会工作work@guest我假设nl2br ed表示字符串中包含

部分。。。对吗?很可能,textarea中的文本用户类型存储在数据库中,当我尝试从数据库加载它并在textarea中再次显示它时,它将无法工作。我相信“nl2br”会将“\n”转换为“
”。谢谢,但即使我不将nl更改为br(nl2br方法),即使这样它也不会工作…:\
FillElements
是否实际填充了文本区域?已发布@Linus是的,但它只在文本为单行时工作谢谢,但即使我不将nl更改为br(nl2br方法),即使这样它也不会工作…:\
FillElements
是否实际填充了文本区域?已发布@Linus是的,但只有当文本在单行中时它才起作用。不,它看起来不是这样的,但第二个参数是从数据库中获取的,它被放置为多行。那个么,如何在文本区域中显示数据库中的多行文本呢?该死的网络编程\@客人那看起来怎么样?按如下方式发布:echo“FillElements('“$subject.”,'“$text.”;”;(都在一行中)$文本从数据库加载(标准php数据库方法)。基本上,用户在textarea中键入一些内容,php会将该文本保存到数据库中,稍后当我尝试将该文本加载回textarea时,如果包含该文本,则不会加载newline@guest不,那个