使用JS中的AJAX POST请求保留文本格式 - javascript

我想做的是使用POST方法和AJAX请求将一些文本(下面的代码中的commentText)传递给PHP页面,该方法与一些标志(what = add在下面的代码中)混合在一起,从而告诉PHP页面文字是。

我使用了post方法,因为它使我可以轻松地从PHP页面的url中恢复一些信息:

JS脚本:

xmlhttp.open("POST", "/comment.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("what=add&comment=" + commentText);

PHP文件:

if ($_POST['what'] == "add")
{
    print_r($_POST['comment']);
    exit();
    ...
}

我使用这种方法的问题是,由于使用url编码,当我进入PHP页面时,文本的格式(上面代码中的注释)消失了。例如,如果commentText为:

this is some comment.
And I have another line.

在PHP文件中,我得到:

$_POST['comment'] -> "this is some comment. And I have another line."

\ n不见了。因此,通过清晰起见的格式,我实质上是指在此特殊情况下的返回行(这是我现在想要的)。

有什么办法可以解决这个问题?我想我可以将文本作为纯文本传递,但是随后失去了使用_POST []功能轻松检索不同字段的能力。这是否意味着我必须以某种方式将数据作为纯文本传递,并在该文本中对字段进行编码?这是唯一的解决方案还是有更好的解决方案?

参考方案

因此,尽管我非常感谢大家的投入,但我想,为了记录下来,我不会添加自己的答案,而是会详细说明一些答案并描述我最终要做什么。

现在,正如Quentin所建议的那样,但没有明确指出,无论数据是通过URL传递还是以任何形式传递,最终,如果该数据(文本)显示在浏览器的页面上,则当然是HTML文本,正如他所说,在HTML中,每个\ n都被视为一个空格。

因此,无论您要做什么,如果在文本编辑器中都得到如下信息:

this is a test
on two lines

它将在浏览器中显示为this is a test on two lines

同样,无论您如何处理数据(在我的情况下,都是使用AJAX和post方法将其传递到PHP页面),这都是正确的。最终,PHP页面将文本的内容返回到JS脚本,并且该文本变为HTML ,因此这两行显示在一行上。

解:

我确信它们是其他方式,但是我所使用的方式确实如建议的那样解析字符串并使用HTML标签对字符串进行格式化。所以从字面上看是这样的:

var output_text = '';
for (i = 0; i < text.length; ++i) {
    if (text.charAt(i) == '\n') {
        output_text += '<br/'>;
    }
    else if ...
}

然后,我将output_text传递给PHP页面。如果PHP文本接收HTML编码的字符串不是问题,那没关系,更糟糕的是,如果您还需要在HTML编码之前存储该字符串,那么您始终可以通过以下方式将2个字符串传递给PHP页面: POST(在我的示例中为“ text”和“ output_text”)。

附言:这个问题不必投反对票,如果您这样做,请解释原因。

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

在JavaScript函数中转义引号 - javascript

我正在尝试将变量传递给javascript函数。根据用户的选择,它可以是文本或图像。这里已经讨论了类似的问题,但我无法解决。在php中,我这样编码:if ($choice == 1) { $img = '<img src = "../folder/'.$_SESSION["img"].'�…

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …