首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

跨域访问如何做呢, 访问 json格式的数据, 求教,从昨天一直研究这个,也没弄出来

2013-06-26 
跨域访问怎么做呢,?访问 json格式的数据, 求教,从昨天一直研究这个,也没弄出来求教?php$ary array(resu

跨域访问怎么做呢,? 访问 json格式的数据, 求教,从昨天一直研究这个,也没弄出来
求教


<?php
$ary  = array('result'=>0,'message'=>'跨域成功');
$json  = json_encode($ary);

echo "$json;";

?>



   $.getJSON("http://www.s94994.com/json.php",function(d){
//alert(1)
alert(d+'....40')
});

返回状态是200,但是数据是空, 我要怎么做才能访问到 json格式的数据呢?

JSON PHP
[解决办法]
用jsonp方法来访问其他域名的接口
示例:
$.ajax({
dataType: 'jsonp',
data: 'id=10',
jsonp: 'jsonp_callback',
url: 'http://www.yiwuku.com/getdata',
success: function () {
// do stuff
},
});

[解决办法]
 js就是有跨域限制,你先做个中建页比如aaa.aspx ,用后台获取内容,这样就没有跨域限制了,然后再ajax请求这个aaa.aspx就可以了
附后台抓内容的例子

string strJson=GetWebContent("http://www.s94994.com/json.php",Encoding.UTF8);
 private string GetWebContent(string Url, Encoding encoding)
        {
            string strResult = "";
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
                //声明一个HttpWebRequest请求
                request.Timeout = 90000;
                //设置连接超时时间
                request.Headers.Set("Pragma", "no-cache");
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream streamReceive = response.GetResponseStream();
                //Encoding encoding = Encoding.UTF8;

                StreamReader streamReader = new StreamReader(streamReceive, encoding);
                strResult = streamReader.ReadToEnd();
                streamReceive.Dispose();
                streamReader.Dispose();


            }
            catch (Exception ex)
            {            }

            return strResult;
        }



这个页写成php的也行,不过语法我不会,不过思路是这样
[解决办法]
ajax不能跨域
百度下jsonp的原理吧,
跨域ajax用的技术不是ajax,而是script节点加载跨域url并url参数传递一个约定的回调函数名
你只需要在服务端ajax接口这样写:
string callback = ???("callback");//获取url中的callback参数
Response.Write(callback+"('跨域返回值')");//往客户端写这样的值
Response.end();

和普通ajax接口差不多,只是多获取一个callback参数,并返回给客户端

这种接口就可以用jquery的jsonp方式跨域调用
[解决办法]
3楼的方法是比较好的    至于jsonp  不建议使用吧。。一般用jsonp获取的内容 硬性要求太多了
[解决办法]
js无法跨域,一定要跨域可以用yahoo的跨域接口,不过最近不是很稳定这个接口。。
[解决办法]
接口兼容,$content.text(JSON.stringify(data.query.results))这句不兼容。。IE木有JSON对象,需要导入json2.js才行
[解决办法]
你的代码呢。。没有使用JSON对象吧
[解决办法]
楼主你有测试过没了。。IE下也可以的,需要倒入json2.js,示例代码

<script type="text/javascript" src="http://www.coding123.net/rardownload/20130106/20130106170832648.js"></script>
<script type="text/javascript" src="http://www.coding123.net/js/jquery.js"></script>
<script> 
window.onload=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) {
        $content.text(JSON.stringify(data.query.results));
    } else {
        $content.text('no such code: ' + code);
    }
});
}
</script>
<div id="content">
 
</div>

[解决办法]
没注意测试http协议。。这个地址允许所有域名可以跨域Access-Control-Allow-Origin: *

ie要跨域需要使用XDomainRequest这个对象。。连接里面的jquery版本是1.4.2的,木有支持XDomainRequest,你下载高版本的jquery来试试、

既然可以搭建服务器,你还不如做个代理就行了,用php 的curl获取远程的页面内容输出就行了,ajax请求这个代理页面
[解决办法]
服务器:
<?php
$ary  = array('result'=>0,'message'=>'跨域成功');
$json  = json_encode($ary);
 
echo "_json=$json;"; // 或者 call_back($json);
 
?>

js:

function include(src,encoding,fun) 

    var s = $C('script');   
    s.type='text/javascript';
    s.charset=encoding; //'gb2312';
    s.src = src;   


    var tags =$$('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); 
};

include("1.php","utf-8",function(){alert(_json);})

热点排行