2014-02-27 28 views
0

所以我有這個jquery塊內的一個coffeescript文件;JQuery/Coffeescript unescape變量字符串

$("#parser-results").append(
"<tr><td>" + d.id + "</td>" + 
"<td>" + d.received_at + "</td>" + 
"<td>" + d.from_address + "</td>" + 
"<td>" + d.to_address + "</td>" + 
"<td>" + d.subject_text + "</td></tr>" + 
"<tr><td colspan=5><div class='body-text'>" + d.body_text.replace(/\n/g, "<br />") + "</div></td></tr>" 
) 

這裏的問題涉及到可變d.body_text,這是從數據庫檢索到的TEXT字段。

我試圖用<br>替換\n的所有實例,並且我逐字地嘗試了每種可以在互聯網上找到的方法的每個jQuery,javascript和coffeescript變體。在數據輸入到數據庫之前,我也試過preg_replacenl2br,但無濟於事。

此外,數據來自稱爲mailparser.io的郵件解析服務。我懷疑它與此有什麼關係,但我真的不確定了。

這裏缺少什麼?我需要一些幫助來確定問題可能是什麼。

+0

你提到在數據庫中輸入數據之前,你嘗試過的preg_replace和nl2br添加
。您是否說
的原始數據也沒有保存?有沒有辦法通過使用phpMyAdmin來確認原始數據...... 這裏有一個快速調試提示:嘗試另一個類似的過程,看看它是否也失敗。就像嘗試替換所有空格(\ s),看看替換方法是否至少工作。它可能會給你一些想要檢查的想法。 – signal2013

+0

另一個提示:你不需要添加'
'來換行。只需在你的css中使用'white-space:pre-wrap;',然後單獨保留文本。或者如果你想將多個空間合併成一個空間,可以使用'pre-line'。見https://developer.mozilla.org/en-US/docs/Web/CSS/white-space。 –

+0

您能否提供一個究竟是什麼'd.body_text'的例子?你確定你有換行符而不是'\ n's作爲兩個字符嗎? –

回答

2

根據評論,似乎有人已經將數據庫中的真實換行字符(即(Coffee | Java)腳本中的"\n")轉換爲兩個字符串'\\' + 'n'。這可以解釋爲什麼:

d.body_text.replace(/\n/g, "<br />") 

沒有任何用處:有沒有新行與<br>更換其實如此,好了,沒有什麼被替換。解決的辦法是更換什麼是真正的有:

d.body_text.replace(/\\n/g, "<br />") 
// ------------------^^^ This gives you a literal \n (as two characters)