为什么jquery中的$ .each无法读取jquery中的'data'?

时间:2014-02-14 14:37:28

标签: javascript php jquery html server-sent-events

我有这个监听这个php函数的监听器

public function notification_query(){

$this->sse();
$data['company_id'] = $this->session->userdata('companyId');
$data['chikito']=$this->pm_model->notifications_admin($data);

echo "data: ".json_encode($data['chikito'])."\n\n";
ob_flush();
flush();
sleep(1); }

如果服务器有事件,它将自动传递给客户端脚本函数。

var es = new EventSource("<?php echo base_url(); ?>admin/notification_query");

 var listener = function (data)
 {
    var data = data.data;
    //$("#notification").append(data);   
      $.each(data, function(index, val) {  
        $("#notification").append(val.details); 
       });

 }

  es.addEventListener("message", listener);

现在的问题是,为什么jquery中的$ .each无法从服务器读取数据传递? 它没有打印。我不明白为什么。

顺便说一句,如果我使用$("#notification").append(data);它将打印通过的数据。

提前感谢那些回答的人。

1 个答案:

答案 0 :(得分:1)

JSON.stringify()方法将值转换为JSON。

var data = JSON.stringify(data).data;

JSON.stringify({});                  // '{}'
JSON.stringify(true);                // 'true'
JSON.stringify("foo");               // '"foo"'
JSON.stringify([1, "false", false]); // '[1,"false",false]'
JSON.stringify({ x: 5 });            // '{"x":5}'
JSON.stringify({x: 5, y: 6});        // '{"x":5,"y":6}' or '{"y":6,"x":5}'