本帖最后由 zohong 于 2010-08-20 15:17:04 编辑

解决方案 »

  1.   

    在Firebug中可以看到响应数据,但是提示错误“invalid label”
    响应数据为:‘{"weatherinfo":{"city":"北京","city_en":"beijing","date_y":"2010年8月20日","date":"庚寅年七月十一","week":"星期五","fchh":"11","cityid":"101010100","temp1":"31℃~22℃","temp2":"26℃~20℃","temp3":"28℃~22℃","temp4":"30℃~21℃","temp5":"29℃~20℃","temp6":"25℃~18℃","tempF1":"87.8℉~71.6℉","tempF2":"78.8℉~68℉","tempF3":"82.4℉~71.6℉","tempF4":"86℉~69.8℉","tempF5":"84.2℉~68℉","tempF6":"77℉~64.4℉","weather1":"多云转阵雨","weather2":"阵雨转小到中雨","weather3":"阴转多云","weather4":"多云","weather5":"多云","weather6":"多云转中雨","img1":"1","img2":"3","img3":"3","img4":"21","img5":"2","img6":"1","img7":"1","img8":"99","img9":"1","img10":"99","img11":"1","img12":"8","img_single":"1","img_title1":"多云","img_title2":"阵雨","img_title3":"阵雨","img_title4":"小到中雨","img_title5":"阴","img_title6":"多云","img_title7":"多云","img_title8":"多云","img_title9":"多云","img_title10":"多云","img_title11":"多云","img_title12":"中雨","img_title_single":"多云","wind1":"微风","wind2":"微风","wind3":"微风","wind4":"微风","wind5":"微风","wind6":"微风","fx1":"微风","fx2":"微风","fl1":"小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级","index":"炎热","index_d":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。","index48":"热","index48_d":"天气较热,建议着短裙、短裤、短套装、T恤等夏季服装。年老体弱者宜着长袖衬衫和单裤。","index_uv":"中等","index48_uv":"弱","index_xc":"不宜","index_tr":"适宜","index_co":"较不舒适","st1":"31","st2":"21","st3":"22","st4":"19","st5":"30","st6":"22","index_cl":"适宜","index_ls":"适宜"}}’
      

  2.   

    格式有问题[{city:"values",weatherinfo:"values"}]
      

  3.   

    $.getJSON("/Service/ObtainHouseSource.html", { "x1": x1, "x2": x2, "y1": y1, "y2": y2, }, function(data)
        {
        $.each(data, function(i, item)
            {
    alert(item.LocationLat);
            });
        });
    js端
      

  4.   

     
    var josn=eval(data);
     for (var i = 0; i < json.weatherinfo.length; i++)
    {
      alert(json.JsonData[i].name);
    }这样你试试
      

  5.   

      
    var josn=eval(data);
     for (var i = 0; i < json.weatherinfo.length; i++)
    {
      alert(json.weatherinfo[i].name);
    }这样你试试
      

  6.   

      
    var josn=eval(data);
     for (var i = 0; i < json.weatherinfo.length; i++)
    {
      alert(json.weatherinfo[i].city);
    }最后个对的吧,这是JS的写法,
      

  7.   

    是格式问题json :
    {"weatherinfo":[{"city":"北京","city_en":"beijing","date_y":"2010年8月20日","date":"庚寅年七月十一","week":"星期五","fchh":"11",...},{......}]
      

  8.   


    在firebug中转换可以的
    用eval('(json字符串)');//返回object
    ----------
    >>> eval('({"weatherinfo":{"city":"北京","city_en":"be...st6":"22","index_cl":" 不宜","index_ls":"不宜"}})');
    Object { weatherinfo=Object}
    -------------
    用eval('[json字符串]');//返回array
    ---------
    >>> eval('[{"weatherinfo":{"city":"北京","city_en":"be...st6":"22","index_cl":" 不宜","index_ls":"不宜"}}]');
    [Object { weatherinfo=Object}]
      

  9.   


    还没等我处理数据的时候,就提示了“invalid label”这个错误。就是那个代码,我要怎么该一下他就不会出这个错了。高手帮忙动个手术,服务端改不了,是中国天气网的数据。。
      

  10.   

    我知道答案。跨域不是这样的,你这个肯定不能实现。
    你打开 细读 json 官方文档后,翻到最后,你会发现这么一段: JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。 其实jquery跨域的原理是通过外链 <script>  来实现的,然后在通过回调函数加上回调函数的参数来实现真正的跨域 Jquery 在每次跨域发送请求时都会有callback这个参数,其实这个参数的值就是回调函数名称,所以,服务器端在发送json数据时,应该把这个参数放到前面,这个参数的值往往是随机生成的,如:jsonp1294734708682,同时也可以通过 $.ajax 方法设置 callback 方法的名称。明白了原理后,服务器端应该这样发送数据:string message = "jsonp1294734708682({\"userid\":0,\"username\":\"null\"})";这样,json 数据 {\"userid\":0,\"username\":\"null\"} 就作为了 jsonp1294734708682 回调函数的一个参数所以,跨域的页面,你也要能控制啊。