为什么新行无法在此javascript警报窗口中运行?
我看到警报窗口和新行有很多不同的问题。 大多数是\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(); } }); }
如果您的控制台日志显示\n
而不是新行,那么这意味着\
在原始字符串中转义\
…
相比
console.log(1,"\\n\\n"); console.log(2,"\n\n");
解
使用.replace()
将你的\n
换成换行符
console.log(3,"\\n\\n".replace(/\\n/g,"\n"))
最可能的原因是你的PHP代码通过在它前面添加另一个反斜杠来逃避反斜杠。 当它到达你的JS代码时,实际上就是这样
"Username is required\\nPassword is required..."
您可以在调试器的网络面板中检查原始响应。 如果您尝试在控制台中查看它,它将显示格式化的输出而不是原始输出。
在PHP代码中仔细检查您的JSON序列化方法,并确保它正在按照您的预期执行\ n。
尝试在\ n之后添加空格。它应该工作
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()
显示正确的行间距字符串
谢谢比利 – 节省了几个小时的悲伤