Backbone.js 从Parse.Query.get文档返回的gameScore Parse.Object对象提供了未定义的gameScore对象
直接来自: 基本上给出了未捕获的引用错误:游戏分数未定义 以下是我的代码,用于解决此问题:Backbone.js 从Parse.Query.get文档返回的gameScore Parse.Object对象提供了未定义的gameScore对象,backbone.js,parse-platform,Backbone.js,Parse Platform,直接来自: 基本上给出了未捕获的引用错误:游戏分数未定义 以下是我的代码,用于解决此问题: // Retrieve class var GameScore = Parse.Object.extend("GameScore"); //redefine the GameScore class based on the cloud. var query = new Parse.Query(GameScore); var my_object; var some_object = query.get("S
// Retrieve class
var GameScore = Parse.Object.extend("GameScore"); //redefine the GameScore class based on the cloud.
var query = new Parse.Query(GameScore);
var my_object;
var some_object = query.get("SQV1DZXv5p", {
success: function(gameScore) { //gameScore is the retrieved object.
alert('Object retrieved, with object ID: ' + gameScore.id);
//document.getElementById('division1').innerHTML = gameScore.id;
my_object = gameScore.id;
},
error: function(object, error) {
alert('Retrieval FAILURE, error: ' + error.message + '; Object retrieved instead is: ' + object); //object will be NULL if not found.
}
});
var score = gameScore;
document.getElementById('division1').innerHTML = my_object;
因此这仍然会抛出gameScore
的参考错误。
另外,document.getELementById
语句不会在mydivision1
div中打印gameScore.id
。它仍然为空。但是当我检查javascript控制台中的my_object
时,它会正确返回gameScore.id
有趣的是,如果我在success函数中运行document.getELementById
行,那么它将显示gameScore.id
…执行以下操作:
var GameScore = Parse.Object.extend("GameScore");
var query = new Parse.Query(GameScore);
query.get("xWMyZ4YEGZ", {
success: function(gameScore) {
// The object was retrieved successfully.
var score = gameScore.get("score");
var playerName = gameScore.get("playerName");
var cheatMode = gameScore.get("cheatMode");
},
error: function(object, error) {
// The object was not retrieved successfully.
// error is a Parse.Error with an error code and message.
}
});
gameScore
仅在成功块的范围内可用,因此出现未捕获引用错误。成功街区之外的世界并不知道它的存在。把你的东西放在里面
另外,
.get()
会从服务器发出请求,因此需要时间才能完成。在.get()
方法之后执行操作gameScore
,将导致在尚未获取该对象时访问该对象,从而导致另一个错误。见下文@danh的评论。对于这样的网络调用,始终在完成块内对获取的对象执行操作。另一种说法是,在.get()之前出现的代码首先运行,在.get()之后出现的代码在网络请求启动之前第二次运行,在success函数中出现的代码第三次运行,在网络请求完成后。谢谢各位。新的网络概念,但清晰。
var GameScore = Parse.Object.extend("GameScore");
var query = new Parse.Query(GameScore);
query.get("xWMyZ4YEGZ", {
success: function(gameScore) {
// The object was retrieved successfully.
var score = gameScore.get("score");
var playerName = gameScore.get("playerName");
var cheatMode = gameScore.get("cheatMode");
},
error: function(object, error) {
// The object was not retrieved successfully.
// error is a Parse.Error with an error code and message.
}
});