为什么新行不能在此javascript警报窗口中工作?

为什么新行不能在此javascript警报窗口中工作?,javascript,jquery,ajax,alert,Javascript,Jquery,Ajax,Alert,我看到警报窗口和新行出现了很多不同的问题。大多数人认为,\n在PHP中被视为一个新行,而不是被发送到javascript 在我的例子中,字符串将在显示\n的新窗口中输出。我刚刚试着通过JSFIDLE将\n写入一个警报框,这很管用,所以这一定是我做事的方法 这是返回控制台的字符串。如您所见,\n肯定存在: 需要用户名\n需要密码\n需要电子邮件\n需要电话\n需要密码 但是,它显示如下: 为什么会这样?我认为它可能与数据类型有关,因为它是从$返回的 if (canAjax &&

我看到警报窗口和新行出现了很多不同的问题。大多数人认为,
\n
在PHP中被视为一个新行,而不是被发送到javascript

在我的例子中,字符串将在显示
\n
的新窗口中输出。我刚刚试着通过JSFIDLE将
\n
写入一个警报框,这很管用,所以这一定是我做事的方法

这是返回控制台的字符串。如您所见,\n肯定存在:

需要用户名\n需要密码\n需要电子邮件\n需要电话\n需要密码

但是,它显示如下:

为什么会这样?我认为它可能与数据类型有关,因为它是从
$返回的

if (canAjax && !try_ajax) { 
    e.preventDefault();
    $.ajax({
        type: "POST", 
        url: "mobilesubmit.php",
        data: {"use_ajax": true, "formdata": $("#register_form").first().serializeArray()},
        success: function(data) {

            // This stupid thing should make new lines!
            alert(data);

            console.log(data);
        },
        error: function (request, status, error) {
            try_ajax = true;
            $("#register_form").submit();
        }
    });
}

尝试在\n之后添加空格。如果控制台日志显示的是
\n
而不是新行,则表示
\
在原始字符串中转义,

<

比较 解决方案 使用
.replace()
\n
替换为换行符

console.log(3,"\\n\\n".replace(/\\n/g,"\n"))

最可能的原因是PHP代码通过在反斜杠前面添加另一个反斜杠来逃避反斜杠。当它到达你的JS代码时,它实际上是

"Username is required\\nPassword is required..."

您可以在调试器的网络面板中检查原始响应。如果您尝试在控制台中查看它,它将显示格式化的输出,而不是原始输出


仔细检查PHP代码中的JSON序列化方法,并确保该方法与预期的方法相同。\n

IE11 inspect在asp.net生成的hiddenfield上显示了相同的问题-它 将其值显示为value=“测试行1\n测试行2”

UT实际上包含
value=“测试线1\\n测试线2”

使用
元素.value.replace(/\\n/g,“\n”)
然后在屏幕上以javascript
alert()


谢谢Billy-节省了悲伤的时间

没有,还尝试在\n前面加上空格,然后在两边加上空格。它是按原样打印的,而不是将标签解析成新行(如果这是正确的术语)。您是否尝试添加了
标签以供参考?参见此。哈,可能就是这样。当我在写一堆描述同样事情的文字时,你发了这个帖子。我将删除我的答案并将其标记为正确。这一直是个问题。(我假设chrome的控制台不会解析新行。我仍然不确定额外的斜杠是从哪里来的,除非这是ajax返回结果的标准。)“如果您尝试在控制台中查看它,它将显示格式化的输出,而不是原始输出。”这就是我遇到的问题。你成功了,但比利·穆恩就在你面前。谢谢
"Username is required\\nPassword is required..."