2011-01-11 29 views
3

這裏是第A的JavaScript/AJAX的樣品:如何使用ajax通過網址發佈消息並保持換行符?

var commReq = getXmlHttpRequestObject(); 
function AddComment(Comment){ 
    if (commReq.readyState == 4 || commReq.readyState == 0){ 
     commReq.open("GET", '/receiveComment.php?com='+Comment+'&' + Math.random(), true); 
     commReq.onreadystatechange = handleComment; 
     commReq.send(null); 
    } 
} 

現在接收註釋的PHP頁面(receiveComment.php)PAGE B:

$Comment = mysql_real_escape_string(preg_replace("/[^A-Za-z0-9_,[email protected]:'\"\/\n ]/","", $_GET['com'])); 
mysql_query("INSERT INTO Comments (Comment,Date) VALUES ('$Comment','$Date')"); 

顯然這些只是樣本裁減,但從2頁。自從我通過ajax存儲評論以來,頁面B從未見過。但我希望能夠存儲用戶可以在textarea框中插入的換行符。任何幫助或建議將不勝感激!

回答

1

使用encodeURIComponent

commReq.open("GET", '/receiveComment.php?com='+encodeURIComponent(Comment)+'&' + Math.random(), true); 

您仍然需要編碼爲POST(信貸agrothe)

commReq.open("POST", '/receiveComment.php?' + Math.random(), true); 
commReq.onreadystatechange = handleComment; 
commReq.setRequestHeader("Content-Type", "multipart/form-data"); 
commReq.send('com=' + encodeURIComponent(Comment)); 
+0

太棒了,這工作!謝謝! – SReca 2011-01-11 20:12:27

0

使用POST,而不是GET。或者對GET方法的註釋進行URL編碼。

我認爲POST會爲您提供更好的服務,如果您想保留換行符等。

+0

感謝您的幫助! – SReca 2011-01-11 20:13:03

1

在您的preg_replace()函數調用中,在第一個參數中,您正在搜索\ n並將其替換爲無。這很可能是問題的原因,因爲\ n表示換行符,因爲它被雙引號括起來。

我想嘗試從preg_replace()函數中刪除「\ n」。

如果是單引號,它不會將\ n視爲換行符,而是將其作爲面值。

而FYI通過GET傳遞信息不會去除jQuery中的換行符。在舊版本的瀏覽器中,儘管GET(支持Firefox 1和IE 6天之前),但它將請求的URL限制爲255個字符,而POST支持無限大小。

相關問題