我有一个数组:
public function show_class_sections(){
$class_id = $_POST['class_id'];
$data = array("success" => false, "html_string" => "");
$result = array();
$result = $this->admin_forms->get_class_sections($class_id);
if(!empty($result)){
$data['success'] = true;
$data['html_string'] = $result;
}
echo json_encode($data);
}
我想使用socket.emit将此数组发送到客户端。 但是当我使用以下方式发送数据时:
let numbers = [8,4,2,1,7,5,3,0];
并在客户端使用以下方法收听
: var numbers1 = JSON.stringify(numbers);
socket.emit('new',{num:numbers1});
在aa的控制台的DevTools上说未定义。
我写的代码不完整。 完整的客户端代码为:
socket.on('new',(data)=>{
var aa = data.num ;
console.log(aa);
});
});
显示为错误
socket.on('new',(data)=>{
var numbers = JSON.parse(data.num); //this will retrieve your array.
console.log(numbers);
这意味着尝试解析的数据是不确定的。
答案 0 :(得分:0)
之所以会发生这种情况,是因为您使用了JSON.stringify,因此您必须对“ 数据”对象执行JSON.parse才能访问该对象的属性“ num ”。对象发送给客户端。
socket.on('new',(data)=>{
var aa = JSON.parse(data);
console.log(aa.num);
});
答案 1 :(得分:0)
发射时应采取的措施如下:
let numbers = [8,4,2,1,7,5,3,0];
var numbers1 = JSON.stringify(numbers);
socket.emit('new',{num:numbers1});
然后您应该在另一侧听这样的声音:
socket.on('new',(data)=>{
var numbers = JSON.parse(data); //this will retrieve your array.
console.log(numbers);
});