我正在使用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的工作?提前致謝!
「和JavaScript,因此對數組中的整數大小的限制」 ......你有IDS比'數大.MAX_SAFE_INTEGER'(2^53-1)這是9007199254740991 ..? – Redu
嗨@Redu,我有數字大於這個數字,他們不是我數據庫中的ID,他們是Facebook分配給玩家的,所以我無法控制他們,但我只是設法解決它 – Emily
好吧,然後轉換他們串起來似乎是一種方式。 – Redu