解决方案 »

  1.   

    跨域使用jsonp吧
    如下<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>注册</title>     
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type ="text/javascript" src="jquery.js"></script>    
    </head>
    <body>
    <script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>   
    <div id="content">   
                
            
    </div>   
       <script>
    $(function(){   
        $.getJSON("http://query.yahooapis.com/v1/public/yql", {   
        q: "select * from json where url='http://m.weather.com.cn/data/101010100.html'",   
        format: "json"   
    }, function(data) {   
        var $content = $("#content")   
        if (data.query.results) {  
    var result = JSON.stringify(data.query.results);
            $content.text(result);  
    var obj = eval('('+result+')');
    alert(obj.weatherinfo.city);
        } else {   
            $content.text('no such code: ' + code);   
        }   
    });   
            
    });
    </script></body>
    <script>

    </script>
    </html>
      

  2.   

    跨域了你那个页面,又没提供jsonp回调,只能做代理
      

  3.   

    代理要用服务器支持的,代理页面用服务器端的xhr对象捉去远程数据分析后输出,ajax请求这个代理页面,参考这个:使用新浪天气预报接口获取天气预报信息
      

  4.   

    还有一个比较不严谨的做法。自己写个servlet,然后用URL类,解析你那个页面的所有元素。把想要数据解析出来。前台ajax调自己这个servlet。
      

  5.   

    这个原因是浏览器的安全限制了js的跨域ajax访问,你可以用服务器后台去访问那个数据url,服务器后台用httpclient这样的东西,然后服务器后台开一个本地的url接口让你的页面访问。 
      

  6.   

    不是吧难道你不能访问http://query.yahooapis.com/v1/public/yql以及配置jquery的正确路径?
      

  7.   

    $(function(){
     
         $.ajax({
            type:"post",
            url:"http://m.weather.com.cn/data/101010100.html", //中央台天气预报
            dataType:"jsonp",//这样吗?
            success:function(data){
               var test = eval(data); 
               alert(1);   //这个都没有反应啊T_T 
                alert(test.weatherinfo.city);
            }
         });
    })
      

  8.   


    有一点不明白,这个是必须的吗?难道那不是针对yahoo的?请赐教啊!还有,必须要有后台代码吗?初学,如果问题白痴,勿喷啊,望赐教!
      

  9.   

    jsonp不是这样用的。
    jsonp不是个标准的东东,不建议用。楼主可以换个思路,写个专门的服务去访问其他网站的服务,也就是把天气预报的服务在你的网站进行一次包装,然后在页面是用ajax调用自己的服务也可以达到效果。
      

  10.   


    你确定你这个不是针对yahoo的吗?我用的是中央气象台的API,这个通用的么?
      

  11.   

     $.getJSON("http://query.yahooapis.com/v1/public/yql", {   
        q: "select * from json where url='http://m.weather.com.cn/data/101010100.html'"
    这是使用雅虎的服务做代理,取到值然后转成json,数据的来源还是这个http://m.weather.com.cn/data/101010100.html
      

  12.   

    可以自己写一个后台,通过HttpWebRequest类获取指定域名下页面元素,然后再进行过滤提取你想要的内容,拼接成json结构传到前台,你就可以直接进行操作了。
      

  13.   

    谢谢,明白了,我得到数据了,给您纠正几个地方
    1.http://query.yahooapis.com/v1/public/yql改成http://query.yahooapis.com/v1/public/yql?callback=?
    2.data.query.results改成data.results
    我得到的数据成xml的了,不过总算有数据了,谢谢!!那个xml的可以转json吗?
      

  14.   

    事实证明,您就一个地方疏忽了http://query.yahooapis.com/v1/public/yql改成http://query.yahooapis.com/v1/public/yql?callback=?就行了
    谢谢啊!!!
      

  15.   

    事实证明,您就一个地方疏忽了http://query.yahooapis.com/v1/public/yql改成http://query.yahooapis.com/v1/public/yql?callback=?就行了
    谢谢啊!!!
    刚才测试,IE必须加上callback=?,火狐和谷歌浏览器可以不加。
      

  16.   

    楼主只需将post改为get就可以了!!