以下是第A页上的javascript / 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_,.!@:'\"\/\n ]/","", $_GET['com']));
mysql_query("INSERT INTO Comments (Comment,Date) VALUES ('$Comment','$Date')");
显然这些只是样本剪辑,但是从2页开始。自从我通过ajax用于存储评论以来,页面B从未被人看到过。但我希望能够存储用户可以在textarea框中插入的换行符。任何帮助或建议将不胜感激!
答案 0 :(得分: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));
答案 1 :(得分:1)
在preg_replace()函数调用中,在第一个参数中,您正在搜索\ n并将其替换为空。这很可能是导致问题的原因,因为\ n表示换行符,因为它用双引号括起来。
我尝试从preg_replace()函数中删除“\ n”。
如果是单引号,它不会将\ n解释为换行符,而是将其作为其面值。
而且仅供参考,通过GET传递信息并不会消除jQuery中的换行符。在较旧的浏览器中,GET确实将请求的URL限制为255个字符(虽然Firefox 1和IE 6天之前),而POST支持无限大小。
答案 2 :(得分:0)
使用POST而不是GET。或者URL编码GET方法的注释。
如果您想保留换行符等,我认为POST会更好地为您服务。