我看到警报窗口和新行有很多不同的问题。大多数是\n
被认为是PHP中的新行而不是发送到javascript。
在我的情况下,字符串将在显示\n
的新窗口中输出。我只是尝试通过jsfiddle将\n
写入一个警告框,这很有效,所以它必须是我做事的方法......
这是返回控制台的字符串。如你所见,\ n肯定存在:
Username is required\nPassword is required\nEmail is required\nPhone is required\nCardnumber is required
然而,它显示如下:
为什么会这样?我认为它可能与数据类型有关,因为它是从$.ajax
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();
}
});
}
答案 0 :(得分:19)
如果您的控制台日志显示\n
而不是新行,则表示\
已在原始字符串中转义...
console.log(1,"\\n\\n");
console.log(2,"\n\n");
使用.replace()
将您的\n
换成换行符
console.log(3,"\\n\\n".replace(/\\n/g,"\n"))
答案 1 :(得分:3)
最可能的原因是你的PHP代码通过在它前面添加另一个反斜杠来逃避反斜杠。当它到达你的JS代码时,它实际上是
"Username is required\\nPassword is required..."
您可以在调试器的网络面板中检查原始响应。如果您尝试在控制台中查看它,它将显示格式化的输出而不是原始输出。
在PHP代码中仔细检查您的JSON序列化方法,并确保它正在按照\ n进行预期。
答案 2 :(得分:1)
尝试在\ n之后添加一个空格。它应该工作
答案 3 :(得分:0)
IE11 inspect在asp.net生成的隐藏字段上显示了同样的问题 - 它 将其值显示为value =“test line 1 \ ntest line 2”
UT实际上包含value="test line 1\\ntest line 2"
使用element.value.replace(/\\n/g,"\n")
然后在它上面的javascript alert()
谢谢比利 - 节省了数小时的悲伤