这就是我想要做的。我正在尝试从数据库中提取数据并创建新用户,并继续检查新用户的每一秒和以前用户位置的变化(我使用Android应用程序跟踪GPS)。每次将新用户添加到数据库时,我都需要能够创建一个新实例,但我不知道如何执行此操作。我见过如下例子,但是对象是在程序中定义的,并不是“自动创建的”。
function cat(name) {
this.name = name;
this.talk = function() {
alert( this.name + " say meeow!" )
}
}
cat1 = new cat("felix")
cat1.talk() //alerts "felix says meeow!"
cat2 = new cat("ginger")
cat2.talk() //alerts "ginger says meeow!"
假设我想从数据库中提取猫的名字并每秒检查一下新的名字。我会有一个php程序,它将它作为JSON拉回并返回到这个JS程序,但是如何通过使用函数实例化一个新的'cat'?任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我不打算用长轮询或其他任何东西来复杂化 - 为了让你开始,我只是假设你可以使用setTimeout()
每30秒检查一次新用户。坚持使用现有的cats()
构造函数,您可以执行以下操作:
var cats = [];
function checkForNewCats() {
$.ajax({
url: "getcats.php",
data : { lastCat : (cats.length == 0 ? "" : cats[cats.length-1].name) }
})
.done(function(data) {
$.each(data, function(i, val) {
cats.push(new cat(val.name));
});
})
.fail(function() {
alert("Something went horribly wrong");
})
.always(function() {
setTimeout(checkForNewCats, 30000);
});
}
checkForNewCats();
因此,它包含一个数组cats
来保存所有对象,然后是一个每分钟重复发出一次ajax请求的函数来检查新的猫并将它们添加到数组中。
这假设PHP返回的JSON是一个cat对象数组,如:
[
{ "name" : "fluffy" },
{ "name" : "sneezy" },
{ "name" : "ned" }
]
显然,您可以为每只猫添加额外的属性。据推测,您的真实世界应用程序会有某种用户ID,名称和您提到的GPS位置。
我为ajax请求设置的data
属性:
data : { lastCat : (cats.length == 0 ? "" : cats[cats.length-1].name) }
基本上是通过最后一只猫的名字并将其留给PHP,然后只返回自那以后添加的猫的名字。显然,在真实世界的应用程序中,您将使用用户ID或记录时间戳来实现此目的。
编辑:jQuery Ajax的旧语法 -
function checkForNewCats() {
$.ajax({
url: "getcats.php",
data : { lastCat : (cats.length == 0 ? "" : cats[cats.length-1].name) },
success : function(data) {
$.each(data, function(i, val) {
cats.push(new cat(val.name));
});
setTimeout(checkForNewCats, 30000);
}
});
}
答案 1 :(得分:0)
我想是这样的事情:
$.getJSON('http://yourserver.com/somefunction/path', function(data){
$.each(data, function (key, value) {
var anotherCat = new cat(value);
anotherCat.talk();
});
});