jsonp请求不显示facebook数据

时间:2014-04-17 15:40:25

标签: javascript json jsonp

我正在使用JSON来显示网站的信息。这本书的例子给了我一个自定义的网站来获取工作中的信息,但当我用蜘蛛侠的Facebook页面替换网址时,似乎数据正在处理,但信息没有显示。我缺少一些关键步骤吗?

var lastReporttime = 0;
window.onload= function(){ 
  setInterval(handleRefresh,3000);
}

function updateSales(sales) {
  var salesDiv= document.getElementById("sales");
  for (var i = 0; i < sales.length; i++) {
    var sale = sales[i];
    var div = document.createElement("div");
    div.innerHTML = sale.category + sale.about + "spiderman";
    salesDiv.appendChild(div);
  }

  if (sales.length > 0) { lastReporttime = sales[sales.length-1].time; } 
}

function handleRefresh() {
  var url = "http://graph.facebook.com/SpiderManDVD"
          + "callback=updateSales"
          + "&lastreporttime=" + lastReporttime
          + "&random="+ (new Date()). getTime();

  var newScriptElement= document.createElement("script");
  newScriptElement.setAttribute("src", url);
  newScriptElement.setAttribute("id", "jsonp");

  var oldScriptElement= document.getElementById("jsonp");
  var head= document.getElementsByTagName("head")[0];
  if (oldScriptElement == null) {
    head.appendChild(newScriptElement);
  } else {
    head.replaceChild(newScriptElement, oldScriptElement);
  }
}

1 个答案:

答案 0 :(得分:0)

您从your book example收到的回复会返回一个JSON数组,该数组在您的代码中得到了完美处理。

facebook api的响应会返回一个破坏代码的JSON对象。

检查两个网址并更新updateSales内的逻辑,根据您的使用情况处理JSON数组和JSONObject。

像这样的东西

function updateSales(sales) {
  var salesDiv= document.getElementById('sales');

  // Check if sales is array or not (One of the crude ways, ofcourse not best but may work for you)
  if (typeof sales.length == 'undefined') {
    sales = [sales];
  }

  for (var i = 0; i < sales.length; i++) {
    var sale = sales[i];
    var div = document.createElement("div");

    div.innerHTML = sale.category + sale.about + "spiderman";
    salesDiv.appendChild(div);
  }

  if (sales.length > 0) { 
    lastReporttime = sales[sales.length-1].time; 
  }
}