【问题标题】:Get LinkedIn share count JSONP获取 LinkedIn 共享计数 JSONP
【发布时间】:2015-01-03 19:03:05
【问题描述】:

使用 LinkedIn API,我想获取 URL 的共享计数。

https://www.linkedin.com/countserv/count/share?url=http://www.linkedin.com&format=json

但是由于同源策略,这给了我一个错误。 我想使用 JSONP 来获取数据,但我卡在那里。

$.getJSON("https://www.linkedin.com/countserv/count/share?url=https://www.linkedin.com&format=jsonp&callback=myCallback", function(data) {
    elem.find(".count").html(data.count);
});

我仍然收到同源策略错误,并且 data.count 中没有数据。 谁能帮我吗?谢谢!

【问题讨论】:

  • 您好,您应该尝试使用 $.ajax cal,并且您不需要在 url 中指定回调函数。 '$.ajax({ url: url, dataType: 'jsonp' })'

标签: javascript jquery json jsonp linkedin


【解决方案1】:

试试

myCallback = function(data) {
  // do stuff with `data`
};
var url = "https://www.linkedin.com/countserv/count/share?"
          + "url=https://www.linkedin.com&format=jsonp&callback=myCallback";
$.getScript(url);

jQuery.getScript()

myCallback = function(data) {
  $("body").append("<pre>" + JSON.stringify(data, null, 2) + "</pre>")
};

$.getScript("https://www.linkedin.com/countserv/count/share?url=https://www.linkedin.com&format=jsonp&callback=myCallback");
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 这不适用于linkedin。 linkedin API 很奇怪,格式不正确
  • 它来自我一直使用linkedin API 的经验。 jsonP 不能通过定义要调用的函数来工作,除非您使用 ajax 调用来执行此操作。你可以自己试试
  • @viditbhatia 无法查看上面的 stacksn-ps 结果?
  • 对不起我的错。没有检查它,但它在我使用的 api 中不起作用。我会投票给你的答案
  • 不确定过去一年是否发生了变化,但截至今天,这对 LinkedIn 来说效果很好。
【解决方案2】:

谢谢大家的回答,不过我自己已经解决了。

这对我有用:

$.getJSON("http://www.linkedin.com/countserv/count/share?url=https://www.linkedin.com&format=jsonp&callback=?", function(data) {
        elem.find(".count").html(data.count);
});

【讨论】:

  • 由于 LinkedIn 更新了他们的 API 以阻止带有数字的回调名称,因此不再工作
【解决方案3】:

从 jQuery 1.5.1 开始,这是构建 AJAX 请求的推荐方式:

$.ajax({
    dataType: "jsonp",
    url: "http://www.linkedin.com/countserv/count/share",
    data: {
        callback: "?",
        format: "jsonp",
        url: "http://www.example.com/"
    }
}).done(function(data) {
    console.log(data.count);
});

【讨论】:

  • jQuery 1.5.1 是4+ years old。你有这个推荐结构的链接吗?此外,您需要将参数括在$.ajax() 周围。
  • 这不再起作用,因为 LinkedIn 修改了他们的 API 以阻止带有数字的回调
【解决方案4】:

几天前,LinkedIn 更改了他们的 API,上面的解决方案被破坏了:

$.getJSON("http://www.linkedin.com/countserv/count/share?url=https://www.linkedin.com&format=jsonp&callback=?", function(data) { elem.find(".count").html(data.count); });

失败,因为 jQuery 将替换 ?进入带有随机名称的回调,其中包含数字。 Linkedin 现在禁止在回调名称中使用数字。

解决方案是使用“手动”调用 $.ajax 来防止 jQuery 自动化

$.ajax({ 数据类型:“jsonp”, url: 'https://www.linkedin.com/countserv/count/share', 数据:{'url':encodeURIComponent(location.href)}, jsonpCallback: 'this_is_a_random_name', 成功:函数(数据){ elem.find(".count").html(data.count);; } });

【讨论】:

  • guest271314 提供的答案对我仍然有效。感谢您的回答,但您确定当前的解决方案不再有效吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多