#php #ajax #parsing
#php #ajax #синтаксический анализ
Вопрос:
итак, я создаю этот чат и пытаюсь добавить функциональные возможности. Пока что у меня есть вот то, чего я добился.
У меня есть функция, которая отображает сообщения.
function displayMessages()
{
$.post('core/chat.php?action=read',function(response)
{
$('.message_display').html(response);
});
}
эта функция вызывается каждую секунду
setInterval(function(){displayMessages();},1000);
содержимое «ответа» генерируется на php.
foreach($messages as $chat_msg)
{
echo '<span style="color:#'.$chat_msg['color'].';">['.$chat_msg['user_name'].']:'.$chat_msg['txt'].' </span><br>';
}
итак, я создаю функцию, которая воспроизводит звук: playsound (file).
Изначально я хотел присоединить его к функции displayMessages ()…
function displayMessages()
{
$.post('core/chat.php?action=read',function(response)
{
$('.message_display').html(response);
});
playSound ("send_message");
}
…но, конечно, это воспроизводит звук при каждом обновлении, имея новое сообщение или нет.
Итак, чтобы исправить это, я подумал о добавлении на стороне php кода, который запускает звуки, если было опубликовано новое сообщение: «ex:
echo $playsoundtrigger="playsound";
но тогда я понятия не имею, что делать дальше.
как я могу проанализировать ответ, чтобы ajax разбил html на 1 сторону и $ playsoundtrigger на другой?
что-то в этом роде, я бы подошел так, если бы это был php:
parse_str("reponse $triger=true");
if ($triger){
playsound();
}
Я ищу функцию синтаксического анализа в ajax, но вся ссылка, которую я смог найти, заключалась в анализе json…
любое решение?
или намекнуть на логику решения моей проблемы?
Примечание: я посмотрел и обнаружил, что ajax может сообщить мне, изменилось ли содержимое, исходя из его стороны, но я не хочу идти этим путем, как хотелось бы в долгосрочной перспективе, чтобы адаптировать звуки в сообщении 🙂
Спасибо
Ответ №1:
Опрос вашего сервера каждую секунду!!! Хм … вы, по сути, подвергаете DDOS-атаке свой собственный сервер. Я думаю, что веб-сокеты — это то, что вам нужно. Но я мало что знаю об этом.
Что касается вашего ответа, вы могли бы на самом деле использовать json, а затем создавать узлы из браузера.
Например:
$data = [];
foreach ($messages as $chat_msg) {
$data[] = [
'color' => $chat_msg['color'],
'user_name' => $chat_msg['user_name'],
'txt' => $chat_msg['txt']
];
}
echo json_encode([
'trigger' => 1
'data' => $data
]);
и в вашем js
function displayMessages()
{
$.post(
'core/chat.php?action=read',
{},
function(res) {
var html = '';
res.data.foreach(function(msg) {
html = '<span style="color:#' msg.color ';">[' msg.user_name ']:' msg.txt '</span><br>';
}
$('.message_display').html(html);
if(res.trigger) {
playSound ("send_message");
}
},
'json'
);
}
Комментарии:
1. привет, спасибо! Я загляну в websockets, никогда не слышал об этом.