Пользователь вводит сообщение, оно ajax-ом отправляется в php и там нужно определить есть ли в нем текстовые смайлы.
$message = $_POST['message'];
$smail = array(":)", ":(");
$grafic = array("<img src = '../image/Smile.png' alt='Smile' align='middle'>",
"<img src = '../image/Sad.png' alt='Smile' align='middle'>");
$new_message = str_replace($smile, $grafic, $message);
Далее $new_message
помещается в массив, кодируется в json, записывается и отправляется обратно в ajax если все успешно, a он в свою очередь показывает сообщение.
$content = array("time" => $time, "user" => $user, "message" => $new_message);
file_put_contents($file, json_encode($content, JSON_PRETTY_PRINT),FILE_APPEND);
echo json_encode($content);
Вот вывод на экран сообщений.
success: function(arr) {
arr = $.parseJSON(arr)
$('#messages').append($('.mess_hide').clone().addClass('mess_tmp').removeClass('mess_hide'));
$('.mess_tmp>.time').html(arr.time);
$('.mess_tmp>.name').html(arr.user);
$('.mess_tmp>.message').html(arr.message);
$('.mess_tmp').removeClass('mess_tmp');
}
А это html
<table id="messages">
<tr class="mess_hide">
<td class="time"></td>
<td class="name"></td>
<td class="message"></td>
</tr>
</table>
Но не работает, что может быть не так?
Во-первых: у вас опечатка в $smail = array(":)", ":(");
заменить надо на $smile.
Во-вторых: как то сложно получается, аяксом отправляется запрос. Думаю стоит просто использовать библиотеку, например, CSS Emoticons.
Вам всеголишь нужно подключить её:
<link href="stylesheets/jquery.cssemoticons.css" media="screen" rel="stylesheet" type="text/css" />
<script src="javascripts/jquery.js" type="text/javascript"></script>
<script src="javascripts/jquery.cssemoticons.js" type="text/javascript"></script>
и на классе где есть смайлик вызвать $('.comment').emoticonize();
Виртуальный выделенный сервер (VDS) становится отличным выбором
Ошибка 500 может возникнуть от нескольких запросов одновременно?
У меня есть функция, которая находит и заменяет тег title (можно заменить, можно оставить существующий)