使用textarea换行符的Ajax响应

时间:2011-01-25 12:49:57

标签: javascript html ajax

我有一个关于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中的换行符吗?

2 个答案:

答案 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函数中的静态字符串。但这是解决这个问题的一种方法。

欢迎任何更好的建议: - )