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



请帮我,我无法从主页获取数据我的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 }

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

我观察到的错误是使用了数据类型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库https://github.com/hail2u/jquery.query-yql:

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);
    }
}

相关内容

  • 没有找到相关文章

最新更新