这是从服务器传过来json 数据,用js怎么解析啊 [{'id':'1','message':'HEHE','sendtime':'2013-07-20 09:46:00'},{'id':'2','message':'大家好,这是测试数据......','sendtime':'2013-07-20 09:47:17'},{'id':'3','message':'我看啊 ,这个聊天工具很好用的啊','sendtime':'2013-07-20 09:47:46'},{'id':'13','message':'地对地导弹','sendtime':'2013-07-20 13:34:01'}]
我是这样弄的: var result=eval('('+data+')');
 alert(result.toJSONString());
其中的data就是上面的json数据 ,可是怎么打印不出来啊 ,第一次弄,不知道怎么弄,帮个忙JSONJavaScript

解决方案 »

  1.   

    看全部代码吧!这是服务器端<?php
      header("Content-Type:text/html;charset=utf-8");
      header("Cache-Control:no-cache");
      session_start();
      require_once '../Models/chatlogModel.php';
      $lander=unserialize($_SESSION['lander']);
      $friendid=$_POST['friendid'];
      
      //file_put_contents("g:/mylog.log", $friendid."\r\n",FILE_APPEND);
      
      $accepterid=$lander['id'];
      
      $chatlogmodel=new chatlogModel();
      
      $result=$chatlogmodel->select_chatlog($friendid, $accepterid);
      if(!$result){
       $data=null;
      }else {
       $data="[";
       //json 数据格式
       //[
       //  {"城市":"北京","面积":16800,"人口":1600},
       //    {"城市":"上海","面积":6400,"人口":1800}
       //]
       for($i=0;$i<count($result);$i++){
       if($i==(count($result)-1)){
       $data.="{'id':'".$result[$i]['id']."','message':'".$result[$i]['message']."','sendtime':'".$result[$i]['sendtime']."'}";
       }else {
       $data.="{'id':'".$result[$i]['id']."','message':'".$result[$i]['message']."','sendtime':'".$result[$i]['sendtime']."'},";
       }
      
       }
       $data.="]";
      
      }
      
      file_put_contents("g:/mylog.log", $data."\r\n\r\n\r\n\r\n",FILE_APPEND);
      //exit();
      
     echo $data;这是js文件代码$(function(){

    //每3秒就调用一次
    window.setInterval(function(){
    var friendid=$('#friendid').val();
    $.post(
         "../Controllers/GetMessageController.php",
         {"friendid":friendid},
         function(data){
          //处理函数
          var result=eval('('+data+')');//?????????????????
             alert(result);
             
             
             
         },
         "json"
    );
    },5000) ;
    })这是打印在mylog.log的数据[{'id':'1','message':'HEHE','sendtime':'2013-07-20 09:46:00'},{'id':'2','message':'大家好,这是测试数据......','sendtime':'2013-07-20 09:47:17'},{'id':'3','message':'我看啊 ,这个聊天工具很好用的啊','sendtime':'2013-07-20 09:47:46'},{'id':'13','message':'地对地导弹','sendtime':'2013-07-20 13:34:01'}]不知道为什么,alert();就是打印不出来,求解释
      

  2.   

    php:
    不用你这么麻烦呀,php支持数组转 json_encode前台:
    你服务器响应是一个json数组,需要双层for循环
      

  3.   


    <script type="text/javascript">
    var data=[{'id':'1','message':'HEHE','sendtime':'2013-07-20 09:46:00'},{'id':'2','message':'大家好,这是测试数据......','sendtime':'2013-07-20 09:47:17'},{'id':'3','message':'我看啊 ,这个聊天工具很好用的啊','sendtime':'2013-07-20 09:47:46'},{'id':'13','message':'地对地导弹','sendtime':'2013-07-20 13:34:01'}];for(var d in data){
    for( var j in data[d]){
    alert(j+"="+data[d][j]); 
    }
    }
    </script>
      

  4.   

    先说说你的 toJSONString 方法是哪里来的
      

  5.   

    我第一次弄这个,是从一个中博客看到的 ,我就这样用了,可是不对,没有toJSONString();直接alert也是没有,我不知道怎么弄啊 ,可不可以给出一个例子啊,这个 
      

  6.   

    toJSONString是json.js扩展对象的方法,需要倒入这个类库才行不顾json.js和jquery有冲突,使用json2.js好些。。方法为JSON.stringify(JSON对象)
      

  7.   

    function JsonToString(o) {    
        var arr = []; 
        var fmt = function(s) { 
            if (typeof s == 'object' && s != null) return JsonToString(s); 
            return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; 
        } 
        for (var i in o) 
             arr.push("'" + i + "':" + fmt(o[i])); 
        return '{' + arr.join(',') + '}'; 
    } data = "[{'id':'1','message':'HEHE','sendtime':'2013-07-20 09:46:00'},{'id':'2','message':'大家好,这是测试数据......','sendtime':'2013-07-20 09:47:17'},{'id':'3','message':'我看啊 ,这个聊天工具很好用的啊','sendtime':'2013-07-20 09:47:46'},{'id':'13','message':'地对地导弹','sendtime':'2013-07-20 13:34:01'}]";
    result=eval('('+data+')');
     alert(JsonToString(result));我第一次弄这个,是从一个中博客看到的 ,我就这样用了,可是不对,没有toJSONString();直接alert也是没有,我不知道怎么弄啊 ,可不可以给出一个例子啊,这个