2013-03-08 60 views
0

因此,我制作了一个脚本,将数据从facebook墙上取出并发布到网站上。这个脚本在Firefox和Chrome以及我的手机上都能很好地工作,所以我猜Safari也是如此。像往常一样,Internet Explorer已决定为此付出代价。getJSON和Internet Explorer 9返回一个.js文件?

因此,我使用getJSON调用来访问Facebook URL并返回数据。然后,我将所需的数据部分放入html代码中,然后将其发回并显示在网站上。我希望能够在Internet Explorer上使用它。希望有人可以看看,并找出如何解决它(或改善我的代码:D)。我没有经常使用Javascript/JQuery,并且可以使用它来做一些基本的事情,但是当解决像这样的问题时,我很快就会迷失方向。下面发布脚本。由于

更新

所以我加了一个错误回调到脚本来检查问题是什么,以及它在Internet Explorer中给出了一个没有传输错误,但在任何其他浏览器没有。有人知道这个问题的解决办法吗?

var myNewData, myOldData; 

function fbstream() { 
    var restart_counter, url, time, date, html, post_count; 
    url = "https://graph.facebook.com/xyz/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ"; 
    $.getJSON(url, function (json) { 
    html = "<div class='fbfeed'>"; 
    if (json.data[0] === undefined && restart_counter < 5) { 
     fbstream(); 
     restart_counter += 1; 
    } else if (json.data[0] === undefined && restart_counter === 5) { 
     $('.facebookfeed').html("Problem loading Facebook content"); 
    } else { 
     post_count = 0; 
     if (myNewData !== undefined) { 
     myOldData = myNewData; 
     } 
     myNewData = json.data[0].id; 
     if (myOldData !== myNewData || myOldData === undefined) { 
     $.each(json.data, function (i, fb) { 
     if (fb.message !== undefined) { 
      post_count += 1; 
      date = fb.created_time.substring(0, 10).split("-", 3).reverse().join("-", 3); 
      time = fb.created_time.substring(11, 19); 
      html += "<div class='fbpost'><div class='dateandtime'>" + date + " at " + time + "</div><div class='fbmsg'>" + fb.message + "</div>"; 
      if (fb.picture !== null) { 
      html += "<div class='fbimg'><img src='" + fb.picture + "' class='center' /></div>"; 
      } 
      html += "</div>"; 
      if (post_count === 3) { 
      return false; 
      } 
     } 
     }); 
     html += "</div>"; 
     $('.facebookfeed').html(html); 
    } 
    } 
}); 
restart_counter = 0; 
} 
setInterval(function() { 
    fbstream(); 
}, 300000); 

我试图将其格式化为尽可能使其可读性。有可能部件稍微偏离。

正如标题所述,Internet Explorer在访问getJSON查询的url时返回一个名为posts.js的文件。在firefox和chrome中,url只是在一个新页面中用一堆json数据打开。

如果需要

这里是按要求从post.js一个项目我可以张贴JSON数据的一个例子。还有更多,但我只是把一个东西来引用

{ 
"data": [ 
    { 
    "id": "3688793151660_5429280924451", 
    "from": { 
     "category": "Energy/utility", 
     "name": "xyz", 
     "id": "3688793151660" 
    }, 
    "message": "And after !", 
    "picture": "http://photos-h.ak.fbcdn.net/hphotos-ak-ash3/123.jpg", 
    "link": "http://www.facebook.com/photo.php?fbid=282413452&set=a.368887806484148.88464.368879353151660&type=1&relevant_count=1", 
    "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh33hPvjk.gif", 
    "privacy": { 
     "value": "" 
    }, 
    "type": "photo", 
    "status_type": "added_photos", 
    "object_id": "542928413452", 
    "application": { 
     "name": "Facebook for iPhone", 
     "namespace": "fbiphone", 
     "id": "66268379" 
    }, 
    "created_time": "2013-03-07T15:24:00+0000", 
    "updated_time": "2013-03-07T15:24:00+0000", 
    "likes": { 
     "data": [ 
      { 
       "name": "removed", 
       "id": "1000392350" 
      }, 
      { 
       "name": "removed", 
       "id": "721372" 
      } 
     ], 
     "count": 2 
    }, 
    "comments": { 
     "count": 0 
    } 
    }, 
    "paging": { 
    "previous": "https://graph.facebook.com/3688793151660/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ&since=1362669840&__previous=1", 
    "next": "https://graph.facebook.com/3688793151660/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ&until=1358410924" 
    } 
} 

格式是有点乱,有些IDS /名称已被编辑/删除

+0

你跟你的反应越来越哪些内容类型?它应该是application/json而不是text/plain。 – 2013-03-08 13:39:14

+0

我如何知道?响应从{ “数据”开始:[ {但格式化,如果有帮助 – Predz 2013-03-08 13:57:51

+0

post.js的内容是什么? (我们只需要前30个字符左右) – 2013-03-08 15:10:39

回答

0

问题修复。

添加以下代码行,我在此网站上发现后一些谷歌上搜索关于“无传输”错误在Internet Explorer

jQuery.support.cors = true;