如何检查来自事件源的数据是否相同
how to check if data coming from event source is the same
我有代码通过事件源或服务器事件从 php 文件中获取数据,但我想检查传入的数据是否与上次已接收的数据相同(如果可能的话) )
如果它不同,那么它应该运行一个函数
这里是 javascript
let obj=new EventSource('php/data.php');
obj.onmessage=function(e){
let chat = e.data;
console.log(chat);
}
类似的东西
这是php
<?php
header("Content-type:text/event-stream");
header("Cache-Control:no-cache");
include('connect.php');
$select = "SELECT * from chat where senderid = 1";
$res = mysqli_query($conn, $select);
if($row = mysqli_fetch_assoc($res))
{
$reciver = $row['message'];
}
echo "data:$reciver/".PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
?>
提前致谢!!!
您可以将收到的响应保存在一个变量中,然后用 e.data 检查并做进一步的操作。
对于这种机制,您需要一个具有更长作用域的变量。可能是全局范围但肯定不是回调处理程序中的本地范围。
所以这就是我尝试过的并且有效
如果它相同,它会打印出一个文本,但如果它不同,它会告诉用户并将变量 ev 更改为新数据。
var source = new EventSource("sample.php");
var ev='';
var n =0;
source.onmessage = function(e) {
if(n==0)
{
chat= e.data
n=1;
}
if(n==1)
{
if(ev == event.data)
{
document.getElementById('result').innerHTML += 'it is the same<br>';
n=1;
}
else{
document.getElementById('result').innerHTML += 'it is not the same<br>';
n=0;
}
}
};
我有代码通过事件源或服务器事件从 php 文件中获取数据,但我想检查传入的数据是否与上次已接收的数据相同(如果可能的话) ) 如果它不同,那么它应该运行一个函数
这里是 javascript
let obj=new EventSource('php/data.php');
obj.onmessage=function(e){
let chat = e.data;
console.log(chat);
}
类似的东西
这是php
<?php
header("Content-type:text/event-stream");
header("Cache-Control:no-cache");
include('connect.php');
$select = "SELECT * from chat where senderid = 1";
$res = mysqli_query($conn, $select);
if($row = mysqli_fetch_assoc($res))
{
$reciver = $row['message'];
}
echo "data:$reciver/".PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
?>
提前致谢!!!
您可以将收到的响应保存在一个变量中,然后用 e.data 检查并做进一步的操作。
对于这种机制,您需要一个具有更长作用域的变量。可能是全局范围但肯定不是回调处理程序中的本地范围。
所以这就是我尝试过的并且有效 如果它相同,它会打印出一个文本,但如果它不同,它会告诉用户并将变量 ev 更改为新数据。
var source = new EventSource("sample.php");
var ev='';
var n =0;
source.onmessage = function(e) {
if(n==0)
{
chat= e.data
n=1;
}
if(n==1)
{
if(ev == event.data)
{
document.getElementById('result').innerHTML += 'it is the same<br>';
n=1;
}
else{
document.getElementById('result').innerHTML += 'it is not the same<br>';
n=0;
}
}
};