为什么新行不能在此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序列化方法,并确保该方法与预期的方法相同。\nIE11 inspect在asp.net生成的hiddenfield上显示了相同的问题-它
将其值显示为value=“测试行1\n测试行2”
UT实际上包含value=“测试线1\\n测试线2”
使用元素.value.replace(/\\n/g,“\n”)
然后在屏幕上以javascriptalert()
谢谢Billy-节省了悲伤的时间没有,还尝试在\n前面加上空格,然后在两边加上空格。它是按原样打印的,而不是将标签解析成新行(如果这是正确的术语)。您是否尝试添加了
标签以供参考?参见此。哈,可能就是这样。当我在写一堆描述同样事情的文字时,你发了这个帖子。我将删除我的答案并将其标记为正确。这一直是个问题。(我假设chrome的控制台不会解析新行。我仍然不确定额外的斜杠是从哪里来的,除非这是ajax返回结果的标准。)“如果您尝试在控制台中查看它,它将显示格式化的输出,而不是原始输出。”这就是我遇到的问题。你成功了,但比利·穆恩就在你面前。谢谢
"Username is required\\nPassword is required..."