繁体   English   中英

Ajax:如何/是否可以解析“.html(响应)”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM