我有一个关于ajax-request的问题,该请求应该从服务器返回一个带换行符(\ n)的字符串来填充textarea。
当我使用javascript执行以下操作时,它可以在textarea中显示2行:
function fillTextArea(){
document.getElementById('myTextArea').innerHTML = "Line1\nLine2";
}
但是如果我使用ajax从服务器获取值,则\ n被视为字符串的所有其他字符,并且只有一行
function fillTextArea() {
new Ajax.Request("/myUrl/....",{
asynchronous:true,
evalScripts:true,
onSuccess:function(transport){
document.getElementById('myTextArea').innerHTML = transport.responseText;
}
});
}
有人知道如何处理ajax请求的responseText中的换行符吗?
答案 0 :(得分:1)
请勿使用.innerHTML = "Line1\nLine2"
。请改用.value = "Line1\nLine2"
。
value
用于表单值。您没有在此处设置HTML内容。
答案 1 :(得分:1)
@Tomalak:Ajax函数返回一个字符串,其中\ n类似于“Line1 \ nLine2”,但textarea只显示一行包含整个String,所以\ n也只是在textarea中显示为文本而不是制作一条新线。
我找到了一个小解决方法:
如果我的ajax函数返回“Line1NEWLINELine2”并用\ n替换“NEWLINE”,则可以使用,所以函数看起来像这样:
function fillTextArea() {
new Ajax.Request("/myUrl/....",{
asynchronous:true,
evalScripts:true,
onSuccess:function(transport){
var responseText = transport.responseText;
var adjustedResponseText = responseText.replace(/NEWLINE/g, '\n');
document.getElementById('myTextArea').value= adjustedResponseText;
}
});
}
我真的不确定,为什么它会有所不同,如果值来自ajax请求或仅作为javascript函数中的静态字符串。但这是解决这个问题的一种方法。
欢迎任何更好的建议: - )