$ .ajax无效,但$ .getJSON正在运行

时间:2018-02-21 12:04:39

标签: javascript jquery json ajax

我正在努力获得pininterest的份额计数,而且下面的代码运行良好

var pi_like_count = 0;
PIUrl = "https://api.pinterest.com/v1/urls/count.json?url=" + url1 + "&format=jsonp" + '&callback=?'
$.getJSON(PIUrl, function (data) {
    pi_like_count = data.count;

    alert(pi_like_count +' pininterest');
});

但是当我试图将下面的代码问题作为

var pi_like_count = 0;
PIUrl = "https://api.pinterest.com/v1/urls/count.json?url=" + url1 + "&format=jsonp" + '&callback=?'
$.ajax({
    method: 'GET',
    url: PIUrl,
    success: function (data) {
        pi_like_count = data.count;

        alert(pi_like_count + ' pininterest');
    },
    error: function (data) {
        alert('error' + data.count + ' pininterest');
        console.log(data);
    },
    async: false
}); 

Console.log错误为

promise: function promise()
readyState: 4
responseText: "{\"error\":\"Invalid callback, use only letters, numbers, square brackets, underscores, and periods.\"}"

当我使用$ .ajax时,这个问题即将到来,我曾尝试过同样的方式来获取Facebook分享数量并且运行良好但pininterest无法正常工作

更多解释

 function GetScores(url) {
    var FBUrl, TWUrl, LNUrl, GLUrl, PIUrl;
    var url1 = "";
    url1 = encodeURIComponent(url1 || url);  

    //Fetch counters from PInterest
    var pi_like_count = 0;
    PIUrl = "https://api.pinterest.com/v1/urls/count.json?url=" + url1 + "&format=jsonp" + '&callback=?'  
    $.ajax({
        type: 'GET',
        dataType: 'json',
        url: PIUrl,
        success: function (data) {
            pi_like_count = data.count;
            alert(pi_like_count + ' pininterest');
        }        ,
        complete: function (jqXHR, data) {
            pi_like_count = data.count;
            alert(pi_like_count + ' pininterest complete');
        },
        error: function (req, status, error) {
            alert('error');
        },
        async: false
    });

    //Fetch counters from Facebook
    var fb_share_count = 0;

    FBUrl = "https://graph.facebook.com/?id=" + url1 + "&format=json";

    $.ajax({
        type: 'GET',
        url: FBUrl,
        success: function (data) {
            fb_share_count = data.share.share_count;
            alert(fb_share_count+' facebook');
        },
        async: false
    });
    var totalshare = parseInt(fb_share_count) + parseInt(pi_like_count);

    return totalshare;
    }

此时Facebook计数和总份额计数在pinterest计数警报显示之后得到,即当此函数第二次调用时,然后在pinterest给出旧计数之后。

2 个答案:

答案 0 :(得分:1)

试一试:

Math.pow(10,15) - 1

答案 1 :(得分:0)

以下是您可以尝试使用CallBack的内容:

var result = 0; 

function handleData(data) {
    result+=data.count;
}

function GetScores(url) {
    var url1 = encodeURIComponent(url1 || url);
    getFb(url1).done(handleData);
    getPi(url1).done(handleData);
    return result;
}

function getPi(url1){

    var PIUrl = "https://api.pinterest.com/v1/urls/count.json?url=" + url1 + "&format=jsonp" + '&callback=?'; 

    return $.ajax({
        type: 'GET',
        dataType: 'json',
        url: PIUrl
    });
}

function getFb(url1){

    var FBUrl = "https://graph.facebook.com/?id=" + url1 + "&format=json";

    return $.ajax({
        type: 'GET',
        url: FBUrl
    });
}

您可以适应您需要共享的每个平台,只需在GetScores中添加另一个函数并正确处理返回的json

您还可以执行以下操作:

function getFb(url1, callback){

var FBUrl = "https://graph.facebook.com/?id=" + url1 + "&format=json";

    $.ajax({
        type: 'GET',
        url: FBUrl,
        success: callback
    });
}

getFb(function(data){
    result+=data.count;
});

尝试根据alert

的结果调整代码