3

理解できません。
Tweet-IDをインクリメントできません...

これがデモです:http://jsbin.com/idupoq/1/edit

glb = {};
glb.lastTweetId = 0;

getTweets();

function getTweets()
{
    console.info('# LAST ID');
    console.log(glb.lastTweetId);

    console.info('# TEST 1');
    glb.lastTweetId++;
    console.log(glb.lastTweetId);  

    console.info('# TEST 2');
    glb.lastTweetId = glb.lastTweetId+1;
    console.log(glb.lastTweetId);  

    console.info('# TEST 3, OK IS INT BUT PARSE AGAIN ');
    glb.lastTweetId = parseInt(glb.lastTweetId);
    glb.lastTweetId++;
    console.log(glb.lastTweetId);  

    $.getJSON('http://search.twitter.com/search.json?q=%23wwm&since_id='+glb.lastTweetId+'&include_entities=true&result_type=mixed&lang=de&callback=?', function(data, textStatus)
    {
        if(data.results.length > 0)
        {
            glb.lastTweetId = data.results[0]['id'];
        }
        glb.tm= setTimeout('getTweets();',5000);
    });
}

前もって感謝します!

4

3 に答える 3

7

これは、受信したIDが数値形式の範囲外であるために発生します。

271567725082578940 + 1 = 271567725082578940

多数を処理するには、特別なライブラリを使用する必要があります。いくつかの例:

于 2012-11-22T11:26:41.377 に答える
1

汚いが短い
http://jsbin.com/idupoq/18/edit

    glb.lastTweetId = ''+data.results[0]['id']+'';
    var lastTwoDig = parseInt(glb.lastTweetId.substr(glb.lastTweetId.length-2));
    var startDigit = glb.lastTweetId.substring(0, glb.lastTweetId.length-2);
    lastTwoDig++;
    if(lastTwoDig==01){ lastTwoDig = '01'; }
    console.log(glb.lastTweetId);
    console.log(' '+startDigit+''+lastTwoDig+' ');      
于 2012-11-22T11:43:51.683 に答える
1

他の人がすでに言っているように、それは数が表現できないため271567725082578941です。この数を1つ増やすだけの場合は、次の関数で十分です。

function stringInc(v){
    var digits = v.toString().split('');
    var i = digits.length-1;
    while (digits[i]==9 && i>0){      
      digits[i] = 0;
      i--;
    }
    digits[i] = 1+parseInt(digits[i]);
    return digits.join('');
}

番号を使ってもっと何かをしたい場合は、VisioNが提案するBigNumberライブラリを使用したほうがよい場合があります。

data.results[0]['id']いずれにせよ、ツイートIDは数値として解釈され、に丸められるため、からツイートIDを読み取ることはできないことに注意してください271567725082578940。を使用する必要がありますdata.results[0]['id_str']

ここで更新されたjsbinを参照してください:http://jsbin.com/idupoq/19/。コンソールがサーバーからの結果をログに記録していることに注意してください。

...

"geo":null,
"id":     271580395022217200,
"id_str":"271580395022217216",
"iso_language_code":"de"

...

したがって、271567725082578940観察している値も正しくありません。

于 2012-11-22T11:56:01.197 に答える