如果我使用php解码数组,则会得到带括号的JSON:
$data = array();
$data[0]["id"] = 23;
$data[0]["modul"] = "my modul";
echo '' .json_encode($data). '';
我正在获取这样的JSON:
[{"id":23,"modul":"my modul"}]
当我希望使用javascript进行解码时,没有任何内容可以解码,这是因为javascript想要不带括号的JSON
var myObj = JSON.parse(mySendJSONData);
我已经尝试在解析之前使用它:
myObj = myObj[0];
但它不能解决问题。
更清楚:我想使用服务器端事件将JSON发送到客户端:
服务器:
<?php
header( 'Content-Type: text/event-stream' );
header( 'Cache-Control: no-cache' );
$data = array();
$data[0]["id"] = 23;
$data[0]["modul"] = "my modul";
echo 'data: ' .json_encode($data). "\n\n";
flush();
?>
客户:
var source = new EventSource("myServerSideEvent.php");
source.onmessage = (event) => {
var myObj = JSON.parse(event.data);
document.getElementById("moduldialog").innerHTML = myObj.modul;
}
答案 0 :(得分:0)
您正在发送JSON编码的数据,该数据应该是字符串。但是您没有在输出中将其描述为字符串。试试:
echo 'data: \'' .json_encode($data). "'\n\n";