JQuery AJAX POST Новая Линия - PullRequest
       9

JQuery AJAX POST Новая Линия

1 голос
/ 29 января 2010

Так что на нашем сайте у нас в настоящее время есть текстовая область для комментирования определенных элементов. Сайт использует AJAX, поэтому пользователь может нажать кнопку и увидеть, как исчезает его сообщение (представьте комментарий в стиле Facebook.)

JQuery / AJAX:

$(function() {
$("input#comment_submit").click(function() {
var comment = $("#comment_box").val();
var dataString = 'comment=' + comment;
$.ajax({
type: "POST",
url: "app.php?id=<?php echo $id; ?>",
data: dataString,
success: function() {
$("textarea#comment_box").attr("disabled", "disabled")
$("input#comment_submit").attr("disabled", "disabled").val("Comment Submitted!");
$("#comments").prepend("<div class=\"comment new\"></div>");
$(".new").prepend("<a href=\"profile.php?username=<?php echo $_SESSION['username']; ?>\" class=\"commentname\"><?php echo $_SESSION['username']; ?></a><p class=\"commentdate\"><?php echo date("M. d, Y", time()) ?> - <?php echo date("g:i A", time()); ?></p><p class=\"commentpost\">" + comment + "</p>").hide().fadeIn(1000);
}
});
return false;
});
});

PHP:

if (isset($_POST['comment']))
{
$username = $_SESSION['username'];
mysql_query("INSERT INTO appcomments (app_id, username, comment, date) VALUES ('" . $id . "', '" . $username . "', '" . $comment . "', NOW() )");
}

Кроме того, я не занимаюсь дезинфекцией, потому что это локальная копия, и я пытаюсь устранить эту ошибку.

Теперь у меня серьезная проблема с этим. Скажем, пользователь просто отправляет этот комментарий:

Мне понравилось

Он появляется пустым, когда страница его получает. Я проверил базу данных, и комментарий остался совершенно пустым.

Так что это странное явление. Однако, если я добавлю косую черту к комментарию $ при входе в базу данных ...

if (isset($_POST['comment']))
{
$username = $_SESSION['username'];
$comment = addslashes($_POST['comment']);
mysql_query("INSERT INTO appcomments (app_id, username, comment, date) VALUES ('" . $id . "', '" . $username . "', '" . $comment . "', NOW() )");
}

Предыдущий комментарий сохраняется в базе данных.

Теперь это вызывает еще больше проблем. Я пытаюсь добавить разрыв строки следующим образом:

Мне понравилось

Надеюсь, таких игр больше

Что работает, но когда я иду и пробую это:

Мне понравилось

Надеюсь, таких игр больше

Ох, и ты рок

Это отправляет пробел в базу данных.

Наконец, добавление амперсанда в любой комментарий приводит к появлению пробела.

Так что на данный момент я понятия не имею, что делать с моим комментарием, чтобы исправить это. Любая помощь будет принята и будет высоко оценена!

Ответы [ 2 ]

1 голос
/ 29 января 2010

вместо

данные: dataString,

сделать

данные: {комментарий: комментарий},

Если вы хотите продолжить делать то же самое, что и сейчас, см. EncodeURIComponent ()

1 голос
/ 29 января 2010

Попробуйте использовать mysql_real_escape_string перед загрузкой в ​​БД

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...