[英]Ajax : How/ Is it possible to parse a '.html(response)'
所以我正在做这个聊天,并试图添加功能。 到目前为止,我在这里所取得的成就。
我有一个显示消息的 function。
function displayMessages()
{
$.post('core/chat.php?action=read',function(response)
{
$('.message_display').html(response);
});
}
每秒调用此 function
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>';
}
所以我构建了一个播放声音的 function:playsound(file)。 我最初想将它附加到 function displayMessages()...
function displayMessages()
{
$.post('core/chat.php?action=read',function(response)
{
$('.message_display').html(response);
});
playSound ("send_message");
}
...但当然,它会在每次刷新时播放声音,无论是否有新消息。 所以,为了修复它,我想在 php sidee 上添加一个代码,如果发布了新消息就会触发声音:“例如:
echo $playsoundtrigger="playsound";
但后来我不知道下一步该做什么。 我如何解析响应,所以 ajax 在一侧分解 html 而在另一侧分解 $playsoundtrigger? 如果它是 php,我会采用这样的方法:
parse_str("reponse+$triger=true");
if ($triger){
playsound();
}
我在 ajax 中寻找解析 function,但我能找到的所有参考都是解析 json ......任何解决方案? 或暗示解决我的问题的逻辑?
注意:我看了看,发现ajax,可以告诉我内容是否发生了变化,基于他的一面,但我不想go这样,从长远来看,我想适应消息上的声音:)
谢谢你
每秒轮询您的服务器...嗯...您实际上是在对自己的服务器进行 DDOS。 我认为 web sockets 是您所需要的。 但对它了解不多。
至于您的答案,您实际上可以使用 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'
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.