Get LinkedIn share count JSONP

北慕城南 提交于 2019-12-24 04:47:15

问题


Using the LinkedIn API, I want to get the share count for an URL.

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

But this gives me an error because of Same-Origin Policy. I want to use JSONP to then get the data, but I am stuck there.

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

I still get the Same-Origin Policy error and no data from data.count. Can anyone help me out? Thanks!


回答1:


Try

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

See 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");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>



回答2:


Thanks everyone for your answers, but I solved it already myself.

This worked for me:

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



回答3:


As of jQuery 1.5.1, this is the recommended way of structuring AJAX requests:

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



回答4:


A few days ago, LinkedIn changed their API and the solutions above are broken :


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

fails because jQuery will replace the ? into a callback with a random name with numbers in it. And Linkedin now prevents using numbers in callback names.

The solution is to use to call "manually" $.ajax to prevent jQuery automation


    $.ajax({
        dataType: "jsonp",
        url: 'https://www.linkedin.com/countserv/count/share',
        data: {'url':encodeURIComponent(location.href)},
        jsonpCallback: 'this_is_a_random_name',
        success: function(data){
                elem.find(".count").html(data.count);;
        }
    });



来源:https://stackoverflow.com/questions/27758478/get-linkedin-share-count-jsonp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!