比如这个:
http://api.t.sohu.com/statuses/public_timeline.json我想了很多方法都不行,我用的是chrome,firefox我试过服务器上访问然后再到本地,但是速度太慢了

解决方案 »

  1.   

    看看Jquery 的getJson方法是可以的
    参考http://api.jquery.com/jQuery.getJSON/
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
            function(data){
              $.each(data.items, function(i,item){
                $("<img/>").attr("src", item.media.m).appendTo("#images");
                if ( i == 3 ) return false;
              });
            });
      

  2.   

    如果你不是在搜狐的域名下,必须用js修改浏览器安全设置,才能跨域获取到他的json,而js修改设置会使浏览器跳出窗口告诉用户当前脚本正在修改浏览器安全选项。放弃吧朋友,我也是搞了好久也没有办法,只有用后台流去读然后存数据库
      

  3.   

    罗嗦一句,jsonp和跨域Ajax是需要后台支持的,各大浏览器都还没有提供安全和有效的跨域Ajax
      

  4.   

    对了,不知道你是不是搜狐家的,如果是的话,情况就好办了。
    比如,你当前的域名是
    talk.sohu.com //是给用户用的聊天等等功能页面
    但是您在
    json.sohu.com 
    里面存储了您所有的返回json格式的数据,那么您是可以通过修改domain方式来读取json数据的。例如
    talk.sohu.com/index.shtml页面里面的
    document.domain 是 talk.sohu.com 
    您将它修改为 sohu.com就可以访问其他的sohu.com域名下的内容
    document.domain = 'sohu.com';
    当然,您不用试图将其改为qq.com,那是无效的。
    也就是,js允许访问您二级域名下的文件,但是不允许访问非自己域名下的文件。
    对于非自己域名下的文件,还是服务器端脚本读取吧。
      

  5.   


    动态创建script标签元素就可以了,或者直接<script src ="外域数据源"></script>
      

  6.   

    js 跨域,可以用iframe 或者script 标签
    我通常用script// 动态导入js
    function include(src,encoding,fun) 

        var s = document.createElement('script');   
        s.type='text/javascript';
        s.charset=encoding; //'gb2312';
        s.src = src;   
        var tags =document.getElementsByTagName('head');   
       if(typeof(fun)=='function'){
            if( document.all ){
               s.onreadystatechange = function(){
                    if(/(complete|loaded)/.test(this.readyState)){
                          fun(); s.onreadystatechange = null; s.parentNode.removeChild(s); 
                     }};
           }else{
                 s.onload = function(){  fun(); s.onload = null; s.parentNode.removeChild(s); };
           }
        } 
        tags[0].appendChild(s); 
    };
      

  7.   


    动态导入js倒无所谓,而且您的代码里涉及到那个document.all后面的parentNode需要改成parentElement(for IE6)。
    用iframe的话,想要操作iframe里面的页面,同样需要同一域名下,并且修改document.domain
    而对于楼猪所说的json格式的话,用script标签导入是不现实的。
    这个试试便知。
    所以,跨子域名调用 iframe+ajax+document.domain,跨域调用 ajax + 服务器脚本。
      

  8.   

    跨域读取怎样能不受浏览器权限限制:
    1. 用 iframe
    2. 用 div, 然后 jquery load(其他网站 url),把收到的数据内容放到 div 中。
    只需要一行 javascript 代码: $("#div_id").load("http://blog.csdn.net/jacklondon"); 就搞定。
    3. 直接用javascript 中的 Ajax ,可以读取别地服务器上的json。同上面 2 一样,但是需要写的代码更多。
      

  9.   

    这需要你对服务器端做修改:
    比如服务器端原本的JSON输出数据为:{data:[]}。
    你本地的JS需要预先定义一个全局的函数:
    functionname(data){
      //exectute data
    }
    服务端修改为要接受一个参数,假设参数名称为callback。
    然后你访问服务端的链接变成了:
    http://url?callback=functionname
    服务端返回:
    functionname( {data:[]} );当你用向DOM插入script节点的方式插入服务端传来的数据时,相当于运行了服务端的一个JS里面的函数。
    functionname就获得了服务端生成的数据。
    最后你要记得完成后清除这个DOM节点释放资源。
      

  10.   

    给你一个例子吧。看来楼主的 javascript 真的不怎么好。
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script><style type="text/css"> 
    div#div_static {width:500px;height:130px;overflow:scroll; border:1px solid;}
    div#div_test {width:700px;height:300px;overflow:scroll; border:1px solid;}
    div#div_test_json {width:600px;height:300px;overflow:scroll; border:1px solid;}</style></head>
    <body>
    <div id="div_static">static</div>
    <div id="div_test"></div>
    <div id="div_test_json"></div><script type="text/javascript">$(function(){
     $("#div_test").load("http://www.google.com.hk");
     $("#div_test_json").load("http://api.t.sohu.com/statuses/public_timeline.json");
    });
    </script>
    </body>
    </html>
      

  11.   


    或许过一段时间,你的js水平上了一个台阶了,你再回来看看你这个帖子里的发言,有另一个感受。
    总之,你说的方法不可行。
    你自己研究一下jq的源码,再跨域读取下数据就知道了。
      

  12.   

    http://topic.csdn.net/u/20101103/17/abd9be35-3860-4252-ab89-0a75e4eb1487.html?seed=1601834559&r=69600084#r_69600084
    谁去说个话 100分  速度滴~