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