簡體   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