解决方案 »

  1.   

    不行呢。用data.head[0].TitleM获取不到head里的值,用data.d.head[0].TitleM也显示不出对话框来。是不是我的JSON写法有问题呢?
      

  2.   

    格式没问题 data.d.head看看能不能得到东西 截图看看
      

  3.   

    用Firefox只能看见弹出一个无字白框出来,IE没有任何响应,搜狗还不错,弹出个框,写着:
      

  4.   

    也不行呢。我试了好多种,data.head[0].TitleM,data.head[0]['TitleM],data.head[0][“Title”],data['TitleM'],没一种成功
      

  5.   

     需要先将json数据转换成js对象var a = eval("("+data.d+")");alert(a.head.TitleM);
      

  6.   

    alert(data.d)能显示你那些字符串,说明d属性是string类型的,不是对象用eval将data.d转为json对象var d=eval('('+data.d+')')
    alert(d.head[0].TitleM)
    alert(d.head[0].TitleF)
    alert(d.head[0].Y)
      

  7.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script language=JavaScript>
        var data = {"head":[{"TitleM":"24小时气温变化图","TitleF":"2014年4月9日8时~2014年4月10日8时","Y":"气温(摄氏度)"}],"Time":[{"Time":"9日8时"},{"Time":"9日9时"},{"Time":"9日10时"},{"Time":"9日11时"},{"Time":"9日12时"},{"Time":"9日13时"},{"Time":"9日14时"},{"Time":"9日15时"},{"Time":"9日16时"},{"Time":"9日17时"},{"Time":"9日18时"},{"Time":"9日19时"},{"Time":"9日20时"},{"Time":"9日21时"},{"Time":"9日22时"},{"Time":"9日23时"},{"Time":"10日0时"},{"Time":"10日1时"},{"Time":"10日2时"},{"Time":"10日3时"},{"Time":"10日4时"},{"Time":"10日5时"},{"Time":"10日6时"},{"Time":"10日7时"}],"content":[{"站名":"2014040909","气温":"18.3"},{"站名":"2014040910","气温":"21"},{"站名":"2014040911","气温":"22.6"},{"站名":"2014040912","气温":"24.5"},{"站名":"2014040913","气温":"26.1"},{"站名":"2014040914","气温":"27.7"},{"站名":"2014040915","气温":"28.5"},{"站名":"2014040916","气温":"28.9"},{"站名":"2014040917","气温":"28"},{"站名":"2014040918","气温":"26.6"},{"站名":"2014040919","气温":"25"},{"站名":"2014040920","气温":"23.7"},{"站名":"2014040921","气温":"22.9"},{"站名":"2014040922","气温":"21.8"},{"站名":"2014040923","气温":"21.1"},{"站名":"2014041000","气温":"20.4"},{"站名":"2014041001","气温":"20.4"},{"站名":"2014041002","气温":"19.5"},{"站名":"2014041003","气温":"19.2"},{"站名":"2014041004","气温":"18.9"},{"站名":"2014041005","气温":"18.3"},{"站名":"2014041006","气温":"18"},{"站名":"2014041007","气温":"18.7"},{"站名":"2014041008","气温":"20.4"}]};
        alert(data.head[0].TitleM);
    </script>
    </body>
    </html>
      

  8.   

    这一步我也试过,eval,JSON.parse()都试过,结果还是那个图片里的,没定义
      

  9.   

    这一步我也试过,eval,JSON.parse()都试过,结果还是那个图片里的,没定义
    我下面那个是对的  
    alert(a.head[0].TitleM);
      

  10.   

    怎么弄的,跟我写的一样啊,怎么我出不来?折磨我一天了,我是要重装系统吗?我想问你一下 你的数据是从外部加载的还是自己写的  如果你做天气预报 那必然是从外部加载的  加载的是json数据 但是实际上也是字符串! 必须用eval() 转换成js对象才行!  他的之所以好使 是因为 直接写成表达式 直接把那串数据建立成了对象!
      

  11.   


    我的javascript就是这样写的,用的是.ajax,注销部分是我无数次试验的局部
      

  12.   

    怎么弄的,跟我写的一样啊,怎么我出不来?折磨我一天了,我是要重装系统吗?我想问你一下 你的数据是从外部加载的还是自己写的  如果你做天气预报 那必然是从外部加载的  加载的是json数据 但是实际上也是字符串! 必须用eval() 转换成js对象才行!  他的之所以好使 是因为 直接写成表达式 直接把那串数据建立成了对象!我是从外部加载的,但是我也试过eval呀,还是失败了
      

  13.   

    在这个代码里,发现下面的data与上面有个变量重合了,为了撇清一切,就改成data1了
      

  14.   


    如果用jq的ajax方法返回 指定了json数据类型  那么返回后 直接将数据转换成对象  alert(data1.d.head[0].TitleM);
      

  15.   

    对了,我如果这样写:alert(data),运行后会弹出一个框,写着object object,两个object
      

  16.   


    ..........
    success:function(data) {
        alert(data.d.head[0].TitleM); //分别试一下这两个
        alert(data.head[0].TitleM);  //分别试一下这两个
    }
    .........
      

  17.   


    如果用jq的ajax方法返回 指定了json数据类型  那么返回后 直接将数据转换成对象  alert(data1.d.head[0].TitleM);
    也不行呢。试验过了,代码里已经有注销的这一段呢,好可怜。
      

  18.   


    ..........
    success:function(data) {
        alert(data.d.head[0].TitleM); //分别试一下这两个
        alert(data.head[0].TitleM);  //分别试一下这两个
    }
    .........

    全都不行。我直接像9楼一样,把数据定义成变量,就可以了,能获取到数据
      

  19.   


    ..........
    success:function(data) {
        alert(data.d.head[0].TitleM); //分别试一下这两个
        alert(data.head[0].TitleM);  //分别试一下这两个
    }
    .........

    全都不行。我直接像9楼一样,把数据定义成变量,就可以了,能获取到数据
    你在哪取的数据? 
      

  20.   


    ..........
    success:function(data) {
        alert(data.d.head[0].TitleM); //分别试一下这两个
        alert(data.head[0].TitleM);  //分别试一下这两个
    }
    .........

    全都不行。我直接像9楼一样,把数据定义成变量,就可以了,能获取到数据
    你在哪取的数据? 
    在后台asp.net里取的数据
      

  21.   

    我的意思是后台的.net已经把数据通过json传过来了,但我无法解析
      

  22.   


    ..........
    success:function(data) {
        alert(data.d.head[0].TitleM); //分别试一下这两个
        alert(data.head[0].TitleM);  //分别试一下这两个
    }
    .........

    全都不行。我直接像9楼一样,把数据定义成变量,就可以了,能获取到数据
    你在哪取的数据? 
    你可以个从头看一下 别纠结在这一个地方  如果不好使  很有可能 是数据有问题  不符合json格式  或者 数据符合json格式  但是你引用的时候有问题  可能键值没对应!
      

  23.   

    我写了这样一句话:var a=data1.d,惊讶的发现这里的a取到了数据,但json数据都有“”号,如果把前后的引号给去掉,是不是就能成9楼那样的数据呢?应该如何去掉?
      

  24.   

    var b = a.slice(1,-1);
      

  25.   

    你有 dataType: "json"
    所以
    succcess: function(data1) {
      if(typeof(data1) === 'string') {
        var a = eval("(" + data1.d + ")");
        alert(a.head[0].TitleM);
    是错误的!
    因为参数 data1 已被解析成了 json 所以不可能是字符串
    根据你主贴的描述 data1.d 才可能是字符串
    所以应写作
    if(typeof(data1.d) === 'string') {
      

  26.   

    另外在网上找到了第二种方法,那种方法稍微麻烦一点,但稍灵活一点,而且如果按照eval漏洞多的话,这种方法可能会安全一点:
                   var a = data1.d;
                        var b= $.parseJSON(a);
                        $.each(b.head, function (key, value) {
                            $.each(value, function (k1, v1) {
                                alert(v1);//这就能取到所有的值了
                            })
                        });
    万分感谢大家。昨天要是来提问,早就解决了,不至于痛苦一天,最多痛苦半天
      

  27.   


    var json = {"head":[{"TitleM":"24小时气温变化图","TitleF":"2014年4月9日8时~2014年4月10日8时","Y":"气温(摄氏度)"}],"Time":[{"Time":"9日8时"},{"Time":"9日9时"},{"Time":"9日10时"},{"Time":"9日11时"},{"Time":"9日12时"},{"Time":"9日13时"},{"Time":"9日14时"},{"Time":"9日15时"},{"Time":"9日16时"},{"Time":"9日17时"},{"Time":"9日18时"},{"Time":"9日19时"},{"Time":"9日20时"},{"Time":"9日21时"},{"Time":"9日22时"},{"Time":"9日23时"},{"Time":"10日0时"},{"Time":"10日1时"},{"Time":"10日2时"},{"Time":"10日3时"},{"Time":"10日4时"},{"Time":"10日5时"},{"Time":"10日6时"},{"Time":"10日7时"}],"content":[{"站名":"2014040909","气温":"18.3"},{"站名":"2014040910","气温":"21"},{"站名":"2014040911","气温":"22.6"},{"站名":"2014040912","气温":"24.5"},{"站名":"2014040913","气温":"26.1"},{"站名":"2014040914","气温":"27.7"},{"站名":"2014040915","气温":"28.5"},{"站名":"2014040916","气温":"28.9"},{"站名":"2014040917","气温":"28"},{"站名":"2014040918","气温":"26.6"},{"站名":"2014040919","气温":"25"},{"站名":"2014040920","气温":"23.7"},{"站名":"2014040921","气温":"22.9"},{"站名":"2014040922","气温":"21.8"},{"站名":"2014040923","气温":"21.1"},{"站名":"2014041000","气温":"20.4"},{"站名":"2014041001","气温":"20.4"},{"站名":"2014041002","气温":"19.5"},{"站名":"2014041003","气温":"19.2"},{"站名":"2014041004","气温":"18.9"},{"站名":"2014041005","气温":"18.3"},{"站名":"2014041006","气温":"18"},{"站名":"2014041007","气温":"18.7"},{"站名":"2014041008","气温":"20.4"}]};var array = json["head"];
    for(var i = 0; i < array.length;i++){
        array[i]["TitleM"];
        array[i]["TitleF"];
    ...............
    }已正确遍历