2011-01-25 22 views
0

我有一個關於ajax-request的問題,它應該從服務器返回一個字符串並用換行符(\ n)填充textarea。用textarea換行的Ajax響應

當我做了以下只是使用JavaScript,它的工作原理和顯示兩行中文字區域:

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的換行?

回答

1

請勿使用.innerHTML = "Line1\nLine2"。改爲使用.value = "Line1\nLine2"

value用於表單值。您不在此處設置HTML內容。

+0

謝謝,沒錯。但它並沒有改變我的問題,兩個功能之間仍然存在差異。 – sergej 2011-01-25 12:59:45

1

@Tomalak:Ajax函數返回一個字符串與\ n像「Line1 \ nLine2」,但textarea只顯示一行與整個字符串,所以\ n也只是在文本中顯示爲文本,而不是制定新的路線。

,我發現了一個小的解決方法:

如果我的AJAX函數返回 「Line1NEWLINELine2」,它取代了 「NEWLINE」 與\ n,這個工作,所以功能看起來像這樣:

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函數中的靜態字符串。但這是解決這個問題的一種方法。

歡迎任何更好的建議:-)