2016-05-26 83 views
0

我正在使用HTML創建Facebook遊戲& Javascript,我目前正致力於獎勵邀請他人蔘與遊戲的人。要做到這一點,我會在新玩家加入時執行檢查 - 我查詢Facebook的Graph API以獲取邀請新玩家的人員ID列表。如何防止在Javascript中向上/向下舍入數字字符串數組?

我的問題是這個,這個查詢返回一個ID數組,這很好,但它似乎好像ID作爲整數返回,並且因爲JavaScript對數組中的整數大小有限制,其中一些ID正在向上或向下舍入1個數字。這意味着一些ID不正確。

我發送這個數組到我的數據庫使用Ajax Post,但PHP文件失敗,因爲我的數據庫中不存在舍入的ID。

我的數據庫中的ID列是VARCHAR,所以我認爲如果數據是以字符串格式而不是int發送的,那麼PHP文件就可以工作。而且我知道,如果將正確的ID存儲爲一個字符串而不是int,那麼Javascript將正確的ID存儲在數組中並沒有問題。

我的問題是,我如何從Graph API調用得到的響應存儲爲字符串,而不是int? Facebook的文檔在這裏:https://developers.facebook.com/docs/graph-api/reference/user/apprequests/指出,當您讀取用戶的apprequests時,您會收到AppRequest節點列表。此頁面(在AppRequest節點上)https://developers.facebook.com/docs/graph-api/reference/app-request/指出from參數作爲User對象返回。此頁面(位於用戶對象)https://developers.facebook.com/docs/graph-api/reference/user/指出ID作爲「數字字符串」返回。但是,向上/向下舍入仍然在Javascript中發生。

這是查詢到的圖形API:

function getRequests() { 

FB.login(function(response) { 
    if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 

//This is the call to Facebook... 
    FB.api('me/apprequests?fields=to,from,id', function(response) { 

    if (response.error) { 
     console.log('Error - ' + response.error.message); 
    } 
    else { 

    var requestid = []; 

//Iterating through the response, and inserting all "from" IDs into the array... 
    for(var i = 0; i < response.data.length; i++){ 
    requestid.push(response.data[i].from.id); 
    } 

    console.log(requestid); 

//Sending the array to the database... 
     $.ajax({ 
     url: 'php_scripts/sendinviterewards.php', 
     data: {'requestid' : requestid}, 
     type: "POST", 
     success: function(response){ 
      console.log(response); 
        } 
     }); 
    } 
    }); 
    } else { 
    console.log('User cancelled login or did not fully authorize.'); 
    } 
}, {scope: 'email, user_birthday'}); 
} 

或許ID被返回作爲數字串,但我使用Javascript是造成四捨五入較大的ID號。如果是這樣的話,解決這個問題最好的辦法是什麼?我需要使用不同的語言嗎?還是有一些使用Javascript的工作?提前致謝!

+0

「和JavaScript,因此對數組中的整數大小的限制」 ......你有IDS比'數大.MAX_SAFE_INTEGER'(2^53-1)這是9007199254740991 ..? – Redu

+0

嗨@Redu,我有數字大於這個數字,他們不是我數據庫中的ID,他們是Facebook分配給玩家的,所以我無法控制他們,但我只是設法解決它 – Emily

+0

好吧,然後轉換他們串起來似乎是一種方式。 – Redu

回答

0

我不能完全確定是什麼原因造成這一點,但你可以試試這個:

for(var i = 0; i < response.data.length; i++){ 
    var id = new String(response.data[i].from.id); 
    requestid.push(id); 
}