Как я могу использовать ajax для отправки сообщения через URL-адрес и при этом сохранять разрывы строк? - PullRequest
3 голосов
/ 11 января 2011

Вот пример javascript / ajax на странице A:

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) СТРАНИЦА 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 страниц. Страница B никогда не видна с тех пор, как через ajax я использую ее для хранения комментария. Но я хочу иметь возможность хранить разрывы строк, которые пользователь может вставить в поле textarea. Любая помощь или рекомендации будут с благодарностью!

Ответы [ 3 ]

1 голос
/ 11 января 2011

В вызове функции preg_replace () в первом аргументе вы ищете \ n и заменяете его ничем. Скорее всего, это является причиной вашей проблемы, так как \ n представляет перенос строки, потому что он заключен в двойные кавычки.

Я бы попробовал удалить "\ n" из вашей функции preg_replace ().

Если бы это была одинарная кавычка, он не интерпретировал бы \ n как разрыв строки, а принял бы его за номинал.

И к вашему сведению, передача информации через GET НЕ удаляет разрывы строк в jQuery. В старых браузерах, GET ограничивает запрашиваемый URL 255 символами (хотя до Firefox 1 и IE 6 дней), тогда как POST поддерживает неограниченный размер.

1 голос
/ 11 января 2011

Использование 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 голосов
/ 11 января 2011

Используйте POST вместо GET.Или URL кодирует комментарий для метода GET.

Я думаю, что POST будет вам полезнее, если вы хотите сохранить разрывы строк и тому подобное.

...