javascript - 服务器发送的事件仅处理字符串吗?

标签 javascript php json server-sent-events

我正在使用 SSE 传输内容,而无需刷新网页。基本上我的主要过程如下:

$query = "SELECT something something";
$result = $mysqli->query($query);
// ^this will return multiple rows eventually

$content= array();
while($inside= $result->fetch_assoc()){     

        array_push($content,$inside);

        }

//$content is now an array with multiple rows, all inserted corrected by debug

$final = json_encode($content);
//^ the json is encoded as supposed [{"something":"something"},{"another":...}]

echo "data: {$final}";
//^ which I then receive with javascript (or at least I want to).
flush();

问题是 JavaScript 中没有收到任何内容。没有错误,没有控制台日志,什么都没有。我尝试过在 javascript 中解决 json,但感觉可怕(根本没有 json)。这不可能吗?如果是的话应该怎么做呢? (我已经使用 time() 进行了测试,并且 javascript 完全可以正常转储数据)

<小时/>

编辑:JAVASCRIPT

var source=new EventSource("test.php");
    console.log("1");
    source.onmessage=function(event)
      {
            console.log("inside .onmessage !!!");
            var data = event.data;
            //data.forEach(function(each){
            //  console.log(each);
            //});
                //var data = JSON.parse(event.data);
            console.log(data);
      };

评论部分与我的问题相关。所有其他行都使用 time() 函数进行调试。

最佳答案

您似乎忘记了 stream format :

Each message is separated by a pair of newline characters.

尝试

echo "data: {$final}\n\n";

关于javascript - 服务器发送的事件仅处理字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20984678/

相关文章:

javascript - jQuery插件,只绑定(bind)一次事件

javascript - 链接到 anchor (ajax url)不会调用 onBeforeUnload

javascript - 获取变量不会发送到 PHP 脚本

javascript - 如何在我的 JSON 数据中引用嵌套数组?

javascript - 取消混合 php 和 js 文件

php - PHP 使用限制、与 SQL 的偏移量进行选择时出错

php - codeigniter 加载 View 特定的 javascript

php - 加快 MYSQL LARGE 查询速度

mysql - 以 JSON 形式存储多语言数据(MySQL)

java - 如何配置 Jackson ObjectMapper 以使用自定义值序列化某些 bean 的某些字段(如果它们为空)?