我如何请求从我的主页访问我的json.json数据?

时间:2016-07-24 20:13:30

标签: jquery ajax jquery-plugins cross-domain

请帮助我,我无法从我的主页获取数据 我的AJAX请求:

$.ajax({
                url:"http://example.com/json.json?jsoncallback=?",
                type:"GET",
                dataType:"jsonp",
                beforeSend:function(){
                    console.log("before send");
                },
                success:function(data,status){
                 console.log("success");
                }  
            });

和我主页上的json.json文件

> {   "firstName": "John",   "lastName": "Smith",   "isAlive": true,  
> "age": 25,   "address": {
>     "streetAddress": "21 2nd Street",
>     "city": "New York",
>     "state": "NY",
>     "postalCode": "10021-3100"   },   "phoneNumbers": [
>     {
>       "type": "home",
>       "number": "212 555-1234"
>     },
>     {
>       "type": "office",
>       "number": "646 555-4567"
>     },
>     {
>       "type": "mobile",
>       "number": "123 456-7890"
>     }   ],   "children": [],   "spouse": null }

请建议我通过搜索谷歌和这里尝试了很多,但无法理解

1 个答案:

答案 0 :(得分:0)

我观察到的错误是使用数据类型jsonp,其中原始数据是json格式。 因此,如果不是跨域请求,则下面的代码块应该可以正常工作。

 $.ajax({
      url : "http://example.com/json.json",
      type : "GET",
      success:function(data,status){
        console.log(data); //json data from the requested url
      },
      failure:(xhr,responseText,status){
        //failure block
      }
    });

但是在你的情况下,如果它是一个跨域请求而你没有你的json数据被回调函数包围,下面的代码块将运行良好,但你必须在你的页面上导入yql库{ {3}}:

function getCrossDomainData(){
    try{
        var site = "http://example.com/json.json";
        var url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from json where url="' + site + '"') + '&format=json&callback=cbFunc';
        $.ajax({
            url: url,
            dataType: 'jsonp',
        });
        function cbFunc(data) {
            // get the data in this block
        }
    }catch(err){
        console.log("Err in getCrossDomainData : "+err);
    }
}